- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メニューバーのイベントが2回実行される)
メニューバーのイベントが2回実行される
このQ&Aのポイント
- CommandBarControlでメニューバーを作成し、イベントを実行すると、2回実行されてしまう問題が発生しています。
- フォームを開くメニューバーを作成し、選択すると、同じコードが2回実行されてしまい、フォームが2つ開かれてしまいます。
- 問題の原因が分からず、対策としては原因を調べるか、既に開かれているかをチェックするロジックを追加する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>何故か2回実行されてしまいます。 引数を ( ) 付きで渡してるからですね。 OnActionプロパティに引数付きマクロ名を設定する時はシングルクォーテーションで囲みます。 .OnAction = "'OpenForm 2'" 他に、ParameterプロパティやTagプロパティを使ったりする方法もあります。 : With .Controls.Add .Caption = "フォームを開く1" .OnAction = "test" .Parameter = 1 End With With .Controls.Add .Caption = "フォームを開く2" .OnAction = "test" .Parameter = 2 End With : Sub test() Dim i As Long i = Application.CommandBars.ActionControl.Parameter MsgBox i UserForm1.Show 0 End Sub #http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=42;id=FAQ
その他の回答 (1)
- joqr
- ベストアンサー率18% (742/4026)
回答No.1
>1は皆無ですし デバッグモードでトレースして、わからないのかな? >2はUserForm1が既に開いているかをチェックするロジックが分かりません。 意味無いでしょ? バグってるんですよ? あなたのプログラムは… 小手先のコーディングで回避するのは???です
お礼
end-uさん: どうもありがとうございました。 引数を ( ) 付きで渡してはダメなんて初めて知りました。 勉強不足でした。 即直したところバッチリでした。m(_ _)m