- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのイベント発生時期について)
VBAのイベント発生時期について
このQ&Aのポイント
- VBA初心者です。トグルボタンのValueを変更した際に発生するClickイベントについて疑問があります。コードの途中で割り込まれるのか、プロシージャが終了してから割り込むのか、それともインターバルに割り込むのかわかりません。
- デバッグモードでは意図通り動作するが、実行モードではコードがスキップされるように見えます。MSGBOXなどを使用していろいろ試していますが、理解できていません。
- この質問で伝えたいことは伝わっているでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
トグルボタンのValueを変更した時に発生します。途中割り込みです。その後戻ってきます。 検証するには例えば下記のようなコードで。 userformにToggleButton1のみ配置して --- Private Sub ToggleButton1_Click() MsgBox ("ToggleButton1_Click") End Sub Private Sub UserForm_Click() MsgBox ("UserForm_Click1") If ToggleButton1.Value = True Then ToggleButton1.Value = False Else ToggleButton1.Value = True End If MsgBox ("UserForm_Click2") End Sub --- UserForm_Click1→(Value変更)→ToggleButton1_Click→UserForm_Click2 という順番になるのが分かるかと思いますが。 なおValueを変更してもClickイベントが発生しないようにするには、下記のようにApplication.EnableEventsを一旦falseにします。その後trueにしておかないと今度は全てのイベントが抑制されてしまいますので注意。 Application.EnableEvents = False トグルボタン.value=true Application.EnableEvents = true
お礼
ありがとうございました。 MSGBOXを入れる場所が根本的に間違っており、正しくトレースできていないことがわかりました。 本当に助かりました。 ありがとうございます。