
CommandBarControlでメニューバーを作成し、イベントを実行していますが、何故か2回実行されてしまいます。
具体的には、
Set myMenu = Application.CommandBars("Worksheet Menu Bar"). _
Controls.Add(Type:=msoControlPopup, before:=11)
With myMenu
.Caption = "User's MenuBar(xx)"
With .Controls.Add
.Caption = "フォームを開く"
.OnAction = "OpenForm(2)"
End With
上記で「フォームを開く」メニューバーを作成して、これを選択すると、UserForm1.Show というロジックが書かれているSubプロシジャーが実行されます。
これにより、フォームが開くのですが、どうもこのプロシジャーが2回実行されており、フォームが2つ開いているのです。
しかし、原因がわかりません。
対策としては、
1.2回実行される原因を調べる。
2.UserForm1が既に開いていたら開かないようにロジックを変更す る。
1は皆無ですし、2はUserForm1が既に開いているかをチェックするロジックが分かりません。
どなたか教えて下さい。
よろしくお願いします m(_ _)m
No.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; …
end-uさん:
どうもありがとうございました。
引数を ( ) 付きで渡してはダメなんて初めて知りました。
勉強不足でした。
即直したところバッチリでした。m(_ _)m
No.1
- 回答日時:
>1は皆無ですし
デバッグモードでトレースして、わからないのかな?
>2はUserForm1が既に開いているかをチェックするロジックが分かりません。
意味無いでしょ?
バグってるんですよ?
あなたのプログラムは…
小手先のコーディングで回避するのは???です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
VBAでユーザーフォームを指定回...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
算術演算子「¥」の意味について
-
[VB.net] ボタン(Flat)のEnable...
-
vbaにてseleniumを使用したedge...
-
vbsでのwebフォームへの入力制限?
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
Excelのマクロについて教えてく...
-
ダブルクリックで貼り付けた画...
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
別のフォームで記述している関...
-
VBAでのユーザフォームの表示有...
-
Excel VBA 選択範囲の罫線色の...
-
エクセル マクロ 別シートから...
-
ascW関数の結果がおかしい
-
ACCESSで別DBにあるクエリを...
-
最小化ボタンで最小化したフォ...
-
Sub Auto_Open() 実行されない
-
ステップモードの動作確認方法
-
BASIC ListViewの選択された行...
-
ExcelVBAで毎月月初の最初にBoo...
-
C++Builderのエラー...
-
Excelのマクロ実行後に動作が重...
-
VBAで選択クエリを実行したらデ...
-
excelのvbaを使って日付を置換...
-
円の中に等間隔に線を引くには
-
メニューバーのイベントが2回...
-
MATLABの乱数生成関数 rand( ) ...
-
エクセル VBA
おすすめ情報