!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part70
https://mevius.5ch.net/test/read.cgi/tech/1616072923/
Excel VBA 質問スレ Part71
https://mevius.5ch.net/test/read.cgi/tech/1621914481/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part73
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 4668-xJJl)
2021/09/13(月) 07:29:59.47ID:GNx0xRRz0203デフォルトの名無しさん (スフッ Sd32-zD50)
2021/09/29(水) 08:41:09.05ID:+gGxbszWd >>202
元データの上位2バイトが00で埋まってた場合、論理シフトで符号が変わる場合があるでしょ
VBAには論理シフトがないから、何か別の方法で再現する必要があると思うんだけど
具体的に、動くコード書いてみて
元データの上位2バイトが00で埋まってた場合、論理シフトで符号が変わる場合があるでしょ
VBAには論理シフトがないから、何か別の方法で再現する必要があると思うんだけど
具体的に、動くコード書いてみて
204デフォルトの名無しさん (ブーイモ MM0e-PL4X)
2021/09/29(水) 09:29:57.66ID:ilMiUA0BM Byte型からLSetが単純で一番速いと思う
定義(追加部分のみ)
Type tyByte
Byte0 As Byte
Byte1 As Byte
Byte2 As Byte
Byte3 As Byte
End Type
代入処理はこんな感じ
データの格納順序は知らんから適当
myByte.Byte0 = long0 And &HFF&
myByte.Byte1 = (long0 And &HFF00&) \ &H100&
myByte.Byte2 = long1 And &HFF&
myByte.Byte3 = (long1 And &HFF00&) \ &H100&
LSet mySingle = myByte
定義(追加部分のみ)
Type tyByte
Byte0 As Byte
Byte1 As Byte
Byte2 As Byte
Byte3 As Byte
End Type
代入処理はこんな感じ
データの格納順序は知らんから適当
myByte.Byte0 = long0 And &HFF&
myByte.Byte1 = (long0 And &HFF00&) \ &H100&
myByte.Byte2 = long1 And &HFF&
myByte.Byte3 = (long1 And &HFF00&) \ &H100&
LSet mySingle = myByte
205デフォルトの名無しさん (スプッッ Sdea-zD50)
2021/09/29(水) 09:40:16.79ID:f5tfMzLod206デフォルトの名無しさん (ワッチョイ 124f-WaYq)
2021/09/29(水) 12:56:20.18ID:slA14A+y0 >>203
ちょっと何を言ってるか分かりませんね。
まずシフトの話はどこから出てきたの?
Long型ならマイナスであれば常にトップビットは
立っているよね?
だからプラスに変換するってことだけど?
トップビットが立っていなければプラスなんで変換する必要はない。
もちろん、最初の設定値のLong型の下位2バイトでマイナスを表現するならそれぞれ*-1してやらなきゃいけないけど>>191を見た限りではそのような扱いでもないしね。
途中でマイナスをもつような型の変数に入れるなら
その後始末をしないといけないというだけ。
そもそもトップビットがなぜ符号なのかというところから理解しないとね。
トップビットを単純に0にすればプラスの値に置き換わるというものでもないし。
例えば、1バイトの変数で言えば、-1はFFhだよね。
これのトップビットを倒すと、7Fhになる。
つまり、1にはならずに127になるよね。
ちょっと何を言ってるか分かりませんね。
まずシフトの話はどこから出てきたの?
Long型ならマイナスであれば常にトップビットは
立っているよね?
だからプラスに変換するってことだけど?
トップビットが立っていなければプラスなんで変換する必要はない。
もちろん、最初の設定値のLong型の下位2バイトでマイナスを表現するならそれぞれ*-1してやらなきゃいけないけど>>191を見た限りではそのような扱いでもないしね。
途中でマイナスをもつような型の変数に入れるなら
その後始末をしないといけないというだけ。
そもそもトップビットがなぜ符号なのかというところから理解しないとね。
トップビットを単純に0にすればプラスの値に置き換わるというものでもないし。
例えば、1バイトの変数で言えば、-1はFFhだよね。
これのトップビットを倒すと、7Fhになる。
つまり、1にはならずに127になるよね。
207デフォルトの名無しさん (ワッチョイ b35f-8sCx)
2021/09/29(水) 19:09:56.88ID:UXZ9zF/70 VBAのウインドウの固定で行を選択するとA列に移動してしまうのはどうにかならない?
手動だとそのまま列でウインドウの固定になるから違いがよくわからん
手動だとそのまま列でウインドウの固定になるから違いがよくわからん
208デフォルトの名無しさん (スフッ Sd32-zD50)
2021/09/29(水) 21:29:48.02ID:7Q67NENAd >>206
元の質問と、そこに付いてるレスをよく読んで
元の質問と、そこに付いてるレスをよく読んで
209デフォルトの名無しさん (ドコグロ MMde-c1VD)
2021/09/29(水) 22:06:13.36ID:bAaW5g7mM210デフォルトの名無しさん (ワッチョイ 124f-WaYq)
2021/09/29(水) 22:10:21.46ID:slA14A+y0211デフォルトの名無しさん (スフッ Sd32-PL4X)
2021/09/29(水) 22:32:44.25ID:helTTC1Td 図解するとこういうことじゃないの?俺の理解が間違ってる?
https://i.imgur.com/z48adB1.jpg
https://i.imgur.com/z48adB1.jpg
212デフォルトの名無しさん (ワッチョイ 124f-E55q)
2021/09/29(水) 22:47:00.69ID:slA14A+y0 >>211
うん。それであってるよ。
ただ、.Netみたいにアンサインな型の変数が無いから
それをどうしようか、という話。
Longで普通に計算すると上位2バイトに65535(&HFFFF)辺りが入れば
例えば&HFFFF00000が入ったとして、4294901760が欲しいのに
普通にLong型だと-65536が取れちゃったりするよね。
うん。それであってるよ。
ただ、.Netみたいにアンサインな型の変数が無いから
それをどうしようか、という話。
Longで普通に計算すると上位2バイトに65535(&HFFFF)辺りが入れば
例えば&HFFFF00000が入ったとして、4294901760が欲しいのに
普通にLong型だと-65536が取れちゃったりするよね。
213デフォルトの名無しさん (ワッチョイ 124f-WaYq)
2021/09/29(水) 23:33:48.06ID:slA14A+y0 あ、でも*-1する方法じゃダメか。
これはあくまでマイナスをプラスにする方法であって、トップビットが立っていてもプラスとみなす方法じゃないからね。
そう考えるとやっぱりもう少し幅の広い変数持っといて計算する方法が楽かな。
だからみんなByte型とか使ってたのかー。
なんか勉強になったわ。
これはあくまでマイナスをプラスにする方法であって、トップビットが立っていてもプラスとみなす方法じゃないからね。
そう考えるとやっぱりもう少し幅の広い変数持っといて計算する方法が楽かな。
だからみんなByte型とか使ってたのかー。
なんか勉強になったわ。
214デフォルトの名無しさん (スプッッ Sdea-zD50)
2021/09/29(水) 23:39:44.93ID:+/PybBD+d 一つの例として、
Long[0]=&h00000000
Long[1]=&h00003E20
の時、得られるSingle値は0.15625になる
正しく計算できてるかどうか試してみればいい
>>191
Hexの戻り値は4桁とは限らないから、それでは正しく結合できないよ
Long[0]=&h00000000
Long[1]=&h00003E20
の時、得られるSingle値は0.15625になる
正しく計算できてるかどうか試してみればいい
>>191
Hexの戻り値は4桁とは限らないから、それでは正しく結合できないよ
215デフォルトの名無しさん (スプッッ Sdea-zD50)
2021/09/29(水) 23:43:02.21ID:+/PybBD+d あまんり綺麗なコードじゃないけど、一応動くと思う
Option Explicit
Type tySingle
varSingle As Single
End Type
Type ty4Byte
Byte0 As Byte
Byte1 As Byte
Byte2 As Byte
Byte3 As Byte
End Type
Sub Long2Single()
Dim mySingle As tySingle
Dim my4byte As ty4Byte
Dim long0 As Long, long1 As Long
long0 = &H0&
long1 = &H3E20&
my4byte.Byte0 = long0 And &HFF&
my4byte.Byte1 = (long0 And &HFF00&) \ &H100&
my4byte.Byte2 = long1 And &HFF&
my4byte.Byte3 = (long1 And &HFF00&) \ &H100&
LSet mySingle = my4byte
Debug.Print mySingle.varSingle
End Sub
Option Explicit
Type tySingle
varSingle As Single
End Type
Type ty4Byte
Byte0 As Byte
Byte1 As Byte
Byte2 As Byte
Byte3 As Byte
End Type
Sub Long2Single()
Dim mySingle As tySingle
Dim my4byte As ty4Byte
Dim long0 As Long, long1 As Long
long0 = &H0&
long1 = &H3E20&
my4byte.Byte0 = long0 And &HFF&
my4byte.Byte1 = (long0 And &HFF00&) \ &H100&
my4byte.Byte2 = long1 And &HFF&
my4byte.Byte3 = (long1 And &HFF00&) \ &H100&
LSet mySingle = my4byte
Debug.Print mySingle.varSingle
End Sub
216デフォルトの名無しさん (ワッチョイ 0349-PXWQ)
2021/09/30(木) 00:24:00.39ID:PZiEyg+B0 Option Explicit
Private Type TPLong
long0 As Long: long1 As Long
End Type
Private Type TPByte
byte0 As Byte: byte1 As Byte: byte2 As Byte: byte3 As Byte
byte4 As Byte: byte5 As Byte: byte6 As Byte: byte7 As Byte
End Type
Private Type TPSingle
single0 As Single: single1 As Single
End Type
Private Sub test()
Dim L As TPLong
Dim B As TPByte
Dim S As TPSingle
L.long0 = &H0
L.long1 = &H3E20&
LSet B = L
B.byte2 = B.byte4
B.byte3 = B.byte5
LSet S = B
Debug.Print S.single0
End Sub
動いた。改行多すぎって言われたので詰めて書いてる。
Private Type TPLong
long0 As Long: long1 As Long
End Type
Private Type TPByte
byte0 As Byte: byte1 As Byte: byte2 As Byte: byte3 As Byte
byte4 As Byte: byte5 As Byte: byte6 As Byte: byte7 As Byte
End Type
Private Type TPSingle
single0 As Single: single1 As Single
End Type
Private Sub test()
Dim L As TPLong
Dim B As TPByte
Dim S As TPSingle
L.long0 = &H0
L.long1 = &H3E20&
LSet B = L
B.byte2 = B.byte4
B.byte3 = B.byte5
LSet S = B
Debug.Print S.single0
End Sub
動いた。改行多すぎって言われたので詰めて書いてる。
217デフォルトの名無しさん (ワッチョイ e32f-pveB)
2021/09/30(木) 00:49:27.70ID:pCEIeulu0218デフォルトの名無しさん (ドコグロ MMde-c1VD)
2021/09/30(木) 05:21:02.09ID:0qBy1lQqM >>210
それツッコミないのはあまりにもレベル低いからだぞ…
それツッコミないのはあまりにもレベル低いからだぞ…
219デフォルトの名無しさん (スフッ Sd32-zD50)
2021/09/30(木) 06:14:58.44ID:gM2Bcn3cd >>217
質問者が単純にHex関数の連結だけでOKだったと書いてるから、それぞれ下位16bitを使ってて、Long[0]が下位、Long[1]が上位側と読み取れる
まあ逆だったとしても簡単に修正できるし
質問者が単純にHex関数の連結だけでOKだったと書いてるから、それぞれ下位16bitを使ってて、Long[0]が下位、Long[1]が上位側と読み取れる
まあ逆だったとしても簡単に修正できるし
220デフォルトの名無しさん (アウアウキー Saef-nXzz)
2021/09/30(木) 08:01:56.59ID:R3l1DBbza 質問する前に良く考えれば自力でできたんじゃね
221デフォルトの名無しさん (ワッチョイ c23d-4IKK)
2021/09/30(木) 09:52:07.40ID:Vb95uiyM0 VBAで標準モジュールを削除するコードを書いてるんだけど、消えない場合がなくね?
removeしてもそれがすぐに反映されない。
commitするようなコマンドてある?
removeしてもそれがすぐに反映されない。
commitするようなコマンドてある?
222デフォルトの名無しさん (ラクッペペ MMde-XWMK)
2021/09/30(木) 10:02:50.98ID:R1d8oRoFM ないならいいじゃん
223デフォルトの名無しさん (ブーイモ MM0e-/zTl)
2021/09/30(木) 10:06:49.68ID:XH3u7BFNM 「場合がなくね?」を「場合がない」と読むのは流石に揚げ足取りが過ぎる
224デフォルトの名無しさん (ブーイモ MM0e-MTek)
2021/09/30(木) 10:16:54.23ID:eFhgF698M なくね?
→なくない?
ないよね?
言語仕様による違いかな
→なくない?
ないよね?
言語仕様による違いかな
225デフォルトの名無しさん (スプッッ Sdea-zD50)
2021/09/30(木) 10:20:26.49ID:+bzcSAlDd 文脈から言い間違いだと気づけないのはアスペだそうですよ
226デフォルトの名無しさん (ワッチョイ d668-zD50)
2021/09/30(木) 10:58:49.96ID:SEX1vFKW0 > commitするようなコマンドてある?
→commitが欲しい
→なくね?は間違い
脳仕様による違いかな
→commitが欲しい
→なくね?は間違い
脳仕様による違いかな
227デフォルトの名無しさん (ワッチョイ c23d-4IKK)
2021/09/30(木) 12:35:11.89ID:Vb95uiyM0 調べるとこういうことが起こってるみたいだな。
https://try2explore.com/questions/jp/11366816
VBComponents.Remove呼び出しは、VBAの実行が停止した場合にのみ実際に有効になる場合があります。
つまり、すべてのステートメントが終了するまで、またはコードがブレークポイントに達してデバッグを停止するまで、
削除操作は有効になりません。
これは、新しいモジュールをインポートするか、既存のモジュールのコードを新しいモジュールに置き換えるための次のコードが原因で問題になります。
https://try2explore.com/questions/jp/11366816
VBComponents.Remove呼び出しは、VBAの実行が停止した場合にのみ実際に有効になる場合があります。
つまり、すべてのステートメントが終了するまで、またはコードがブレークポイントに達してデバッグを停止するまで、
削除操作は有効になりません。
これは、新しいモジュールをインポートするか、既存のモジュールのコードを新しいモジュールに置き換えるための次のコードが原因で問題になります。
228デフォルトの名無しさん (ワッチョイ d6da-zD50)
2021/09/30(木) 13:00:34.16ID:aMauK9B30 もう起こったぞ
229デフォルトの名無しさん (ワッチョイ 9242-d6h8)
2021/09/30(木) 19:03:25.50ID:gc4CAj+A0 クリリンのことかー
230デフォルトの名無しさん (ワッチョイ 2701-CiRx)
2021/09/30(木) 19:31:20.50ID:4/dpkDC70231デフォルトの名無しさん (ワッチョイ d6da-zD50)
2021/09/30(木) 20:06:00.47ID:aMauK9B30 バイナリならByte型でやればいいのにね
232デフォルトの名無しさん (ワッチョイ 12ad-zD50)
2021/09/30(木) 22:38:31.79ID:tyeheD170 for i=0 to 10
if AAA(i) then Range("A1").offset(i,0)="OK"
next
↑こんな感じのfor文を書いたら普通に動いていたんだけど、
for i=0 to 10
debug.print i, AAA(i)
if AAA(i) then Range("A1").offset(i,0)="OK"
next
↑for文の中にdebug.printを入れたら、iが10になっても止まらず、
イミディエイトウィンドウ上に、「i, AAA(i)」の部分がずっとループして止まらなくなった。
こんなことってありえますか?
if AAA(i) then Range("A1").offset(i,0)="OK"
next
↑こんな感じのfor文を書いたら普通に動いていたんだけど、
for i=0 to 10
debug.print i, AAA(i)
if AAA(i) then Range("A1").offset(i,0)="OK"
next
↑for文の中にdebug.printを入れたら、iが10になっても止まらず、
イミディエイトウィンドウ上に、「i, AAA(i)」の部分がずっとループして止まらなくなった。
こんなことってありえますか?
233デフォルトの名無しさん (ワッチョイ de8c-ysz4)
2021/09/30(木) 23:00:52.63ID:sFWbYEj80 AAA(i) って中身はなんだ
234デフォルトの名無しさん (ワッチョイ 1e68-wYsx)
2021/09/30(木) 23:03:17.67ID:50MfSZL40 >232
i=i-1
や
i=3
みたいにiが永久に10を超えない動作が入るとそうなる
i=i-1
や
i=3
みたいにiが永久に10を超えない動作が入るとそうなる
235デフォルトの名無しさん (ワッチョイ 0349-PXWQ)
2021/09/30(木) 23:04:37.72ID:Vp0fi7DV0 普通に動いていると思っていただけで元々普通に動いてなかったとかはある
こんな感じのって言ってるから、そのソースそのまま受け取るわけには
いかんのだろうなって思った
こんな感じのって言ってるから、そのソースそのまま受け取るわけには
いかんのだろうなって思った
236デフォルトの名無しさん (アウアウウー Sa43-E/Tk)
2021/09/30(木) 23:16:32.92ID:VHGvetdVa 初心者の頃は手動でセル入力してた方が早く終わってしまうのが、もどかしくもあるけど
それでもvbaは覚えるべきだと思っていろいろ頑張ってます
それでもvbaは覚えるべきだと思っていろいろ頑張ってます
237デフォルトの名無しさん (ワッチョイ de8c-ysz4)
2021/09/30(木) 23:22:00.84ID:sFWbYEj80238232 (ワッチョイ ffad-2jfQ)
2021/10/01(金) 00:46:48.32ID:85aYXoDy0 AAAはリストボックスです。
わかりにくかったので、listAとします。
中身はTRUEかFALSEです。
listA.list(0)がTRUEなら、A1セルにOKを入力
listA.list(1)がFALSEなら何もしない。
listA.list(2)がTRUEなら、A3セルにOKを入力
…
という処理でした。
debug.printを入れる前に動かした時は、画面が固まることもなく正常に終了しました。
debug.printを入れた後に動かしたらループが止まらなくなりました。
debug.printで出力されたiは、0→1→…→9→10→0→1→…というループではなくて、
0→1→…→9→10→6→7→8→9→10→6→…→10→6→…というループでした。
「debug.print i」がiの値に影響を与える、ということはないですもんね。
他の部分を明日あらためて確認してみます。
ありがとうございました。
わかりにくかったので、listAとします。
中身はTRUEかFALSEです。
listA.list(0)がTRUEなら、A1セルにOKを入力
listA.list(1)がFALSEなら何もしない。
listA.list(2)がTRUEなら、A3セルにOKを入力
…
という処理でした。
debug.printを入れる前に動かした時は、画面が固まることもなく正常に終了しました。
debug.printを入れた後に動かしたらループが止まらなくなりました。
debug.printで出力されたiは、0→1→…→9→10→0→1→…というループではなくて、
0→1→…→9→10→6→7→8→9→10→6→…→10→6→…というループでした。
「debug.print i」がiの値に影響を与える、ということはないですもんね。
他の部分を明日あらためて確認してみます。
ありがとうございました。
239デフォルトの名無しさん (アウアウアー Saff-gIpp)
2021/10/01(金) 17:55:16.70ID:fQjrPzOfa クラスを使うメリットってなに?
240デフォルトの名無しさん (ワッチョイ ff42-Q9Gn)
2021/10/01(金) 19:26:10.62ID:aPfKzK/z0 見た目が美しい
241デフォルトの名無しさん (ワッチョイ cf68-2jfQ)
2021/10/01(金) 19:29:13.73ID:AYkrwA2S0 自己満足
242デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
2021/10/01(金) 19:45:19.68ID:3/37uweO0243デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 19:47:27.08ID:4jCtmjal0 >>239
色々あるが、VBAのクラス機能はゴミなのでマジで自己満が多いと思う
解説サイトで玄人の技・隠し機能みたいなノリで紹介されてるので、使えるとプロっぽく見える。
@イベントやデフォルトメンバーみたいなオブジェクトモジュール専用の機能が使える
イベントをまとめたいとかで、仕方なしに、これ目的で使ってる人が多いと思う
A変数に値を入れて、その変数を色んな関数の引数にするっていう事が多々あるけど、
そういう「変数と関数」が常にペアになっているなら纏めた方が分かりやすい
B標準モジュールではモジュールレベルで宣言した変数は実行中保存される。
なので、ある関数でモジュールレベルの変数に値を保存して、別の関数で再利用みたいな使い方が出来る。
でも標準モジュールだと当然その変数に保存できる値は一つなので使い勝手が悪い。
クラスモジュールならインスタンスごとに別の値を保存できる
色々あるが、VBAのクラス機能はゴミなのでマジで自己満が多いと思う
解説サイトで玄人の技・隠し機能みたいなノリで紹介されてるので、使えるとプロっぽく見える。
@イベントやデフォルトメンバーみたいなオブジェクトモジュール専用の機能が使える
イベントをまとめたいとかで、仕方なしに、これ目的で使ってる人が多いと思う
A変数に値を入れて、その変数を色んな関数の引数にするっていう事が多々あるけど、
そういう「変数と関数」が常にペアになっているなら纏めた方が分かりやすい
B標準モジュールではモジュールレベルで宣言した変数は実行中保存される。
なので、ある関数でモジュールレベルの変数に値を保存して、別の関数で再利用みたいな使い方が出来る。
でも標準モジュールだと当然その変数に保存できる値は一つなので使い勝手が悪い。
クラスモジュールならインスタンスごとに別の値を保存できる
244デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 19:51:30.36ID:4jCtmjal0 この手の話題には「お前らは使いこなしてないからメリットを把握できてないが、俺は使いこなせてる」おじさんが来る
245デフォルトの名無しさん (ワッチョイ f35f-1D0T)
2021/10/01(金) 19:59:58.89ID:jrcl2rEY0 処理高速化するクラスくらいは単純だし使いまわせるし使ってもいいんじゃない
246デフォルトの名無しさん (ワッチョイ f35f-ZUrU)
2021/10/01(金) 20:12:23.33ID:HK8CLsAI0 ただ単にすっきりして可読性がよい
クラスにしてると他人のコード化したときに何をしてるかもう一度把握するのが容易
自分でメソッドやプロパティを作るとファイルシステムオブジェクトやコレクションを扱い易くなる
クラスにしてると他人のコード化したときに何をしてるかもう一度把握するのが容易
自分でメソッドやプロパティを作るとファイルシステムオブジェクトやコレクションを扱い易くなる
247デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 20:33:12.85ID:4jCtmjal0 JSとかと違ってモジュール内に構文で記述できない(単体のモジュールファイルとしてしか書けない)から、
クラスモジュールを書くこと自体が億劫に感じて余り印象よくないわ
プロジェクト内だとどこからでも呼び出せるから、どこでどう使われてるのかサッパリだし
イベント機能とか状態保存を有効に使いたい、コレクションを自作したい、
みたいな特別な理由がない限り使わない方がいいんじゃないかなぁと思ってる
クラスモジュールを書くこと自体が億劫に感じて余り印象よくないわ
プロジェクト内だとどこからでも呼び出せるから、どこでどう使われてるのかサッパリだし
イベント機能とか状態保存を有効に使いたい、コレクションを自作したい、
みたいな特別な理由がない限り使わない方がいいんじゃないかなぁと思ってる
248デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/01(金) 20:46:27.80ID:g1N/sLwpM 継承までは望まないとしてもせめてInitializeに引数を持てるようにして欲しかった
249デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 20:53:23.76ID:4jCtmjal0 >>248
Initializeはコンストラクタじゃなくてイベントだから、
仮に引数があってもオブジェクトモジュール内じゃないと使えない上に、
インスタンスごとにイベントハンドラ用のモジュールレベル変数が必要になって面倒だと思う
Initializeはコンストラクタじゃなくてイベントだから、
仮に引数があってもオブジェクトモジュール内じゃないと使えない上に、
インスタンスごとにイベントハンドラ用のモジュールレベル変数が必要になって面倒だと思う
250デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/01(金) 21:49:30.27ID:j+Pc2S4XM イベントに引数渡せる言語はいくらでもあるのに何を言ってるんだ?w
251デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 22:01:08.86ID:4jCtmjal0252デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/01(金) 22:07:37.29ID:CXdVtwXkM253デフォルトの名無しさん (ワッチョイ cfda-2jfQ)
2021/10/01(金) 22:11:26.60ID:CmFZe7Ct0 質問者の環境や能力を無視すんなよ
254デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 22:24:35.99ID:4jCtmjal0 >>252
何をどう解釈したのか言ってくれれば対応できるけど、最早返答が意味不明過ぎるんだわ
何に対して「イベントに引数渡せる言語はいくらでもあるのに何を言ってるんだ?w」と疑問が沸いたのか説明して?
何をどう解釈したのか言ってくれれば対応できるけど、最早返答が意味不明過ぎるんだわ
何に対して「イベントに引数渡せる言語はいくらでもあるのに何を言ってるんだ?w」と疑問が沸いたのか説明して?
255デフォルトの名無しさん (ワッチョイ 8301-8myK)
2021/10/01(金) 22:34:31.13ID:4jCtmjal0 >>252
あと、VBAのクラスに「引数が付いたコンストラクタが欲しいな」っていう希望から
「Initializeに引数を持てるようにして欲しかった」っていう要望が出たのは明白だろう
で、イベントに引数を渡すのは面倒だよねって話をしたら「コンストラクタにすればいい」ってのもよくわからん。
だったらイベント関係なしに、初めから使いやすいコンストラクタ相当の言語機能が定義されてた方がいいだろう
あと、VBAのクラスに「引数が付いたコンストラクタが欲しいな」っていう希望から
「Initializeに引数を持てるようにして欲しかった」っていう要望が出たのは明白だろう
で、イベントに引数を渡すのは面倒だよねって話をしたら「コンストラクタにすればいい」ってのもよくわからん。
だったらイベント関係なしに、初めから使いやすいコンストラクタ相当の言語機能が定義されてた方がいいだろう
256デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/01(金) 22:55:44.73ID:f1R1MoFX0 一般のObject指向言語で言うところの継承が使えないとか色々あるから普通にデザインパターンを考慮して作ろうとするとそこそこ制限受けるよね。
例えば継承が使えないからテンプレートメソッドパターンが使えないとか、
VB.Netで言うSharedが使えないからキチンとシングルトンパターン使おうとすると結構厄介だったりとか。
インターフェースが使えるから継承の代わりにストラテジーパターンでも使って組もうとか考えても限界あるし。
あ?コンストラクタに引数?
そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。
まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
他のObject指向言語やってる人って結構インターフェースの概念を疎かにしたりするしね。
例えば継承が使えないからテンプレートメソッドパターンが使えないとか、
VB.Netで言うSharedが使えないからキチンとシングルトンパターン使おうとすると結構厄介だったりとか。
インターフェースが使えるから継承の代わりにストラテジーパターンでも使って組もうとか考えても限界あるし。
あ?コンストラクタに引数?
そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。
まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
他のObject指向言語やってる人って結構インターフェースの概念を疎かにしたりするしね。
257デフォルトの名無しさん (ワッチョイ b32f-/JM3)
2021/10/02(土) 02:59:35.03ID:xagjL2JO0 イベントに引数渡す(というか受け取る)のは別に面倒でもなんでないから
コンストラクタの引数をInitializeイベントに渡せたらまあそれもいいんだが
VBAだとInitializeイベントがオーバーロードできないからなぁ
まあもともとのVBがオブジェクト指向でもなんでもなかったとこからスタートしてるからな
俺はVBAのクラスは自作イベント使いたいときに使うものと思ってる
コンストラクタの引数をInitializeイベントに渡せたらまあそれもいいんだが
VBAだとInitializeイベントがオーバーロードできないからなぁ
まあもともとのVBがオブジェクト指向でもなんでもなかったとこからスタートしてるからな
俺はVBAのクラスは自作イベント使いたいときに使うものと思ってる
258デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 06:05:15.61ID:g1EUYVpxM259デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 06:08:02.24ID:g1EUYVpxM >>256
> あ?コンストラクタに引数?
> そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。
> まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
そういうのは頭使うとは言わない
単に面倒(かつバグの元)なだけ
無い物ねだりすんなと言うならわかるけど
> あ?コンストラクタに引数?
> そんなのは初期化用のメソッド作って呼びゃいいだろうと俺は思うけどね。
> まあでもそういうのに頭使って組むからVBAは面白いんだと思うよ。
そういうのは頭使うとは言わない
単に面倒(かつバグの元)なだけ
無い物ねだりすんなと言うならわかるけど
260デフォルトの名無しさん (ワッチョイ b3e6-SE+q)
2021/10/02(土) 07:21:09.62ID:f83gGEH/0 VB7を待て!
261デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 07:44:35.99ID:PmOXqFk20262デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
2021/10/02(土) 07:49:32.43ID:i6pQYLUQ0 それ言い出すとどんな言語でも「だけ」になるぞ
263デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 07:52:52.17ID:PmOXqFk20 それにポリモーフィズムを理解している奴ならむしろバグやUTケースを減らせるコードが書ける。
でなければObject指向なんてここまで浸透しなかっただろうよ。
でなければObject指向なんてここまで浸透しなかっただろうよ。
264デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 07:53:44.67ID:PmOXqFk20 >>262
例えば?
例えば?
265デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 08:50:27.63ID:7sXji/t3M むしろ>>263の方に例えば?って言いたいわw
266デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 09:59:20.90ID:PmOXqFk20267デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 10:26:50.08ID:SSNRs28sM268デフォルトの名無しさん (ワッチョイ cf10-P/uO)
2021/10/02(土) 10:45:25.61ID:l9bGJwl90269デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 11:55:15.97ID:SSNRs28sM 勉強?
からかわれてることぐらいは理解した方がいいぞw
からかわれてることぐらいは理解した方がいいぞw
270デフォルトの名無しさん (ワッチョイ d3da-4VCj)
2021/10/02(土) 11:56:22.57ID:h3OHY9Ln0 まあまあ、通りがかりの者だけど、お前ら仲良くやれや
271デフォルトの名無しさん (ササクッテロラ Sp47-P/uO)
2021/10/02(土) 12:17:57.73ID:4Bm9Y75Jp まったく最近のじじいは
マウントどうのとかほざくくせに
負けず嫌いで困る
マウントどうのとかほざくくせに
負けず嫌いで困る
272デフォルトの名無しさん (ブーイモ MMe7-JsPX)
2021/10/02(土) 12:26:19.80ID:s0PycLWJM 5chはじじいの巣窟ですよ。
子供は他所で遊んだ方が良いですよ。
子供は他所で遊んだ方が良いですよ。
273デフォルトの名無しさん (ワッチョイ 6f68-UmxQ)
2021/10/02(土) 17:44:59.50ID:i6pQYLUQ0 >>264
クラスにコンストラクタがない
→newの後にメソッドなりで中身かえればいい「だけ」
それを言い出すとクラスそのものもなくてもどうにでもできるだろって話になる
そうじゃなくて、そんなめんどくさいことを「今更」したくないって話なんだ
それが苦にならないor自分で既にそれらを自動化するライブラリがある!ってなら問題ないと思うよ
君の言ってる事は間違いではない。単に感覚の違いだ
ただ、俺はやだなぁ
ついでに言うとarrayにpushはマジで欲しい
クラスにコンストラクタがない
→newの後にメソッドなりで中身かえればいい「だけ」
それを言い出すとクラスそのものもなくてもどうにでもできるだろって話になる
そうじゃなくて、そんなめんどくさいことを「今更」したくないって話なんだ
それが苦にならないor自分で既にそれらを自動化するライブラリがある!ってなら問題ないと思うよ
君の言ってる事は間違いではない。単に感覚の違いだ
ただ、俺はやだなぁ
ついでに言うとarrayにpushはマジで欲しい
274デフォルトの名無しさん (ワッチョイ cfb0-k9+P)
2021/10/02(土) 17:50:29.29ID:ffSwt3TR0 >>273
したくないのは自由だが、いまさらVBAが更新されることはないから、諦めて他の言語に行ってくれ
したくないのは自由だが、いまさらVBAが更新されることはないから、諦めて他の言語に行ってくれ
275デフォルトの名無しさん (ワッチョイ b32f-slNU)
2021/10/02(土) 18:23:04.84ID:xagjL2JO0 >>263
ちゃんとしたオブジェクト指向言語使えば減らせるってならともかく
VBAでオブジェクト指向でやってUTケース減らせると思えんが
ちょっとVBA関係ない話になるが
お前の思うポリモーフィズムと引数付きコンストラクタの使いどころ教えてくれ
ちゃんとしたオブジェクト指向言語使えば減らせるってならともかく
VBAでオブジェクト指向でやってUTケース減らせると思えんが
ちょっとVBA関係ない話になるが
お前の思うポリモーフィズムと引数付きコンストラクタの使いどころ教えてくれ
276デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 18:24:23.99ID:yfSowQXWM277デフォルトの名無しさん (ワッチョイ cfb0-k9+P)
2021/10/02(土) 18:35:12.83ID:ffSwt3TR0278デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/02(土) 19:02:41.91ID:/B20gKTEM ああ確かにそうだな
そりゃすまん
そりゃすまん
279デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 21:28:02.67ID:PmOXqFk20 >>275
そうだな、ちょっとその前に
例えば一つの例としてゲームを作ったとしよう。
それは簡単なシューティングゲームだったとして、
キャラクターの中に自機、弾、敵、ヒットマークがあったとする。
キャラクター数の上限は考えないものとし、敵は幾つか種類がいるものとして、ひとつは地形判定を行う、一つは弾を打つ、等の違いがあった場合、
君ならどう作るか聞いてもいいかな?
質問を質問で返すようなことするなと言っておいて悪いが最初に認識を合わせるために聞いておきたい。
そうだな、ちょっとその前に
例えば一つの例としてゲームを作ったとしよう。
それは簡単なシューティングゲームだったとして、
キャラクターの中に自機、弾、敵、ヒットマークがあったとする。
キャラクター数の上限は考えないものとし、敵は幾つか種類がいるものとして、ひとつは地形判定を行う、一つは弾を打つ、等の違いがあった場合、
君ならどう作るか聞いてもいいかな?
質問を質問で返すようなことするなと言っておいて悪いが最初に認識を合わせるために聞いておきたい。
280デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/02(土) 21:48:51.07ID:PmOXqFk20 >>273
そもそも論として、クラスを使わなければ何か出来ないことがあるかと言われれば、それはあまり思い付かない。
ただ、VBAでクラスのコンストラクタに引数を持ってないという程度であればそれで代用が効くだろうという話。
それも面倒だというのであれば、クラスを生成して初期化するメソッドを作ってそれに引数を持たせるようにして呼び出せばいくつそういう場所があっても一回書いておけばいいということになる。
そもそも論として、クラスを使わなければ何か出来ないことがあるかと言われれば、それはあまり思い付かない。
ただ、VBAでクラスのコンストラクタに引数を持ってないという程度であればそれで代用が効くだろうという話。
それも面倒だというのであれば、クラスを生成して初期化するメソッドを作ってそれに引数を持たせるようにして呼び出せばいくつそういう場所があっても一回書いておけばいいということになる。
281デフォルトの名無しさん (ワッチョイ b32f-slNU)
2021/10/03(日) 05:20:08.91ID:fyf/YlYy0 >>279
認識あわせの例がシューティングゲームとかその時点でお前とは合わんわ
シューティングゲームとか作らんし、その想定でどう作るとか言われてもな
まあ一から全部作ることはないし、何らかのフレームワークに従って作るんじゃね
そんな細かい実装的な話を聞きたいんじゃないんだよ
認識あわせの例がシューティングゲームとかその時点でお前とは合わんわ
シューティングゲームとか作らんし、その想定でどう作るとか言われてもな
まあ一から全部作ることはないし、何らかのフレームワークに従って作るんじゃね
そんな細かい実装的な話を聞きたいんじゃないんだよ
282デフォルトの名無しさん (ササクッテロ Sp47-P/uO)
2021/10/03(日) 07:39:28.72ID:8uofczFap283デフォルトの名無しさん (ワッチョイ 6f8c-GArm)
2021/10/03(日) 11:58:59.58ID:Lx3l1CXP0 ガンダムで例えてくれ
284デフォルトの名無しさん (ワッチョイ cfda-vizG)
2021/10/03(日) 12:18:23.19ID:PztuncMq0 坊やだからさ
285デフォルトの名無しさん (アウアウウー Sa27-jOtc)
2021/10/03(日) 12:51:23.55ID:oCTMWA/sa excel+vbaでマインスイーパーは造れますか?
どこかにソースありますか?
どこかにソースありますか?
286デフォルトの名無しさん (ブーイモ MMff-Ig7M)
2021/10/03(日) 12:54:45.72ID:cPfMe0TfM287デフォルトの名無しさん (ドコグロ MMa7-E/uf)
2021/10/03(日) 13:18:38.78ID:PZL9KPgcM vba minesweeper code でググれ
288デフォルトの名無しさん (ワッチョイ e301-QRk2)
2021/10/03(日) 22:35:03.42ID:x8fdTISD0 教えて下さい
ガンチャート形式の日程表で
日付の色塗りだけじゃなくて
タスク表示(その日の予定)もさせたいんだけど
どう関数組んだらいい?
ガンチャート形式の日程表で
日付の色塗りだけじゃなくて
タスク表示(その日の予定)もさせたいんだけど
どう関数組んだらいい?
289デフォルトの名無しさん (ワッチョイ f35f-1D0T)
2021/10/03(日) 23:22:18.21ID:VDfIFkhd0 >>288
ガントチャート形式の日程表とやらの構成はどうなっている?
日付の色塗りとは、何を指している?
タスク表示とは、タスク名?をどこに表示させることを言っている?
このへん予め提示しないと解決が長引くよ
ガントチャート形式の日程表とやらの構成はどうなっている?
日付の色塗りとは、何を指している?
タスク表示とは、タスク名?をどこに表示させることを言っている?
このへん予め提示しないと解決が長引くよ
290デフォルトの名無しさん (ワッチョイ 435f-JGFc)
2021/10/04(月) 00:04:37.41ID:j9cfwAH/0 >>288
セルサイズを大きくしてタスクを入力すればいい
セルサイズを大きくしてタスクを入力すればいい
291デフォルトの名無しさん (ワッチョイ 6f8c-GArm)
2021/10/04(月) 01:17:19.95ID:BaE5qGe00 excel ガントチャート フリーで検索
292デフォルトの名無しさん (ワッチョイ 435f-P/uO)
2021/10/04(月) 09:25:56.63ID:dlhTdODc0 質問失礼します
タイマーで二つのマクロを順番に実行したいのですが
ひとつめのマクロ実行が長引いてしまい
マクロ実行中にApplication.OnTimeのcallで次のマクロが動くとエラーになってしまいます
Application.OnTimeの時間になっても前のマクロが終わるまで待つやぶつからなくする方法はあるでしょうか?
タイマーで二つのマクロを順番に実行したいのですが
ひとつめのマクロ実行が長引いてしまい
マクロ実行中にApplication.OnTimeのcallで次のマクロが動くとエラーになってしまいます
Application.OnTimeの時間になっても前のマクロが終わるまで待つやぶつからなくする方法はあるでしょうか?
293デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/04(月) 09:37:56.41ID:X/RNGavO0294292 (ワッチョイ 435f-P/uO)
2021/10/04(月) 10:15:29.97ID:dlhTdODc0295デフォルトの名無しさん (ブーイモ MMe7-Ig7M)
2021/10/04(月) 10:57:06.41ID:JQlH+vDNM ontimeの第3引数も調べてね
296デフォルトの名無しさん (アウアウアー Saff-3pxB)
2021/10/04(月) 12:27:18.56ID:kyO84GtQa 関数に引数が七つも八つもあるとわかりにくくなるから、それならクラスにしておけば、可読性が良くなるのかな
297デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/04(月) 12:54:51.17ID:X/RNGavO0 >>296
そうね。
ただVBAのクラスは1クラス1モジュール使ってしまうのと、クラスが格納されているフォルダが一階層しか使えないからネーミングに気を付けて後でそれがそういう意味を持つクラスだって分かるようにしておかないとね。
後、あれやこれやと引数のクラス作らなくても、引数として格納する変数が一意でいい場合は標準モジュールでも同じように作れば使えるよ。
ただしこの場合は引数として渡すんじゃなくてその標準モジュール側に作ったプロパティを直接読みに行くことになるけどね。まぁ使い分けだね。
そうね。
ただVBAのクラスは1クラス1モジュール使ってしまうのと、クラスが格納されているフォルダが一階層しか使えないからネーミングに気を付けて後でそれがそういう意味を持つクラスだって分かるようにしておかないとね。
後、あれやこれやと引数のクラス作らなくても、引数として格納する変数が一意でいい場合は標準モジュールでも同じように作れば使えるよ。
ただしこの場合は引数として渡すんじゃなくてその標準モジュール側に作ったプロパティを直接読みに行くことになるけどね。まぁ使い分けだね。
298デフォルトの名無しさん (ワッチョイ bf3d-kB/c)
2021/10/04(月) 13:39:00.82ID:1MgeDxIh0 マクロを実行させると、Excelが落ちてしまい、
ステップ実行させるとマクロが正常終了orExcelが落ちない
ていう事になってるんだが、
どこで異常終了してるか調べる方法ある?
ステップ実行させるとマクロが正常終了orExcelが落ちない
ていう事になってるんだが、
どこで異常終了してるか調べる方法ある?
299デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/04(月) 13:41:09.43ID:X/RNGavO0300デフォルトの名無しさん (ワッチョイ ff4f-P/uO)
2021/10/04(月) 13:54:27.50ID:X/RNGavO0 上記のやり方が大変だというのであれば
Logをどこかのtxtファイルにはく、という手もある。
Logをどこかのtxtファイルにはく、という手もある。
301デフォルトの名無しさん (ワッチョイ bf3d-kB/c)
2021/10/04(月) 14:13:00.80ID:1MgeDxIh0 >>299,300
ブレイクポイントを貼ると落ちない。
なんとなくやばい場所は分かってるんだけど、on errorでもcatchできないんだよな。
やってることは、 uiautomationを使ってコンボボックス叩く(Expand)てことやってるんだが、
おそらくその行で落ちるんだが、
落ちずに成功する場合もあるんだよな。
ブレイクポイントを貼ると落ちない。
なんとなくやばい場所は分かってるんだけど、on errorでもcatchできないんだよな。
やってることは、 uiautomationを使ってコンボボックス叩く(Expand)てことやってるんだが、
おそらくその行で落ちるんだが、
落ちずに成功する場合もあるんだよな。
302デフォルトの名無しさん (ワッチョイ cf68-2jfQ)
2021/10/04(月) 14:34:03.70ID:AbV0YbaI0 >>301
WinAPIで似たような事があった
本来待ち時間が必要な処理を待たずに次へ行くからブレイクポイント無しだと落ちるってケースね
怪しい所にSleep関数使って500ミリ秒待たせたら落ちなくなった事があるよ
WinAPIで似たような事があった
本来待ち時間が必要な処理を待たずに次へ行くからブレイクポイント無しだと落ちるってケースね
怪しい所にSleep関数使って500ミリ秒待たせたら落ちなくなった事があるよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- インド軍が係争地のパキスタン側に攻撃 26人犠牲テロへの報復 [七波羅探題★]
- 【文春】《記事予告》国民的女優&人気俳優 不倫スクープ第2弾 ★5 [Ailuropoda melanoleuca★]
- 若年層も注意「人や物の名前が出てこない」もしかしたらスマホ認知症かも…原因は「スマホの使い過ぎ」 [七波羅探題★]
- アイヌに対する差別偏見“見聞きしたことある”回答の1割 政府 [香味焙煎★]
- 【サッカー】UEFA-CL準決勝第2戦 インテル×バルセロナ [久太郎★]
- 日テレ「マジカル頭脳パワー!!」「THE夜もヒッパレ」「天声慎吾」「歌の大辞テン」など装い新たに蘇る [ひかり★]
- 「45歳だけど、大学に行って勉強し直そうと思う」 なぜかこれが日本だと笑われる件。おかしくないか?この国 [377388547]
- 【動画】日本さん、ゾンビが発生したら銃がないので確実に詰むことが証明されてしまう これ銃ないと絶対無理だろ、、、 [689851879]
- ダブパンマン出禁の🏡
- マチュ「キラキラだぁ」「シュウジ♥」「ニャァン💢」👈逆にこいつに共感できるやついるの? [606757419]
- 記憶が1週間しか保たないんだけどどうすればいい
- 【速報】第四次印パ戦争開戦 [972432215]