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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) 開いているフォルダを全て閉じる、マクロを教えて下さい 3 2022/08/28 08:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダに格納されている...
-
IF文、条件分岐の整理方法
-
VBAコードのインデント表示
-
A列に記載されているフォルダ...
-
VB.net(VB)で、フォームにExcel...
-
VBAなくなるの?
-
【ExcelVBA】インデックスが有...
-
vba アクティブシートの名前変...
-
vba 削除
-
エクセルのマクロについて教え...
-
エクセルVBAにて =A1=B1とすれ...
-
VBA 別ブックから条件に合うも...
-
時間短縮のために、テキストフ...
-
ワードVBA どの表か知ることは...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
VBA指定行削除
-
VBAで大量のファイルをシート名...
-
VBA 別ブックからコピペしたい...
-
配列のペースト出力結果の書式...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
別のフォームで記述している関...
-
Sub Auto_Open() 実行されない
-
VBAでのユーザフォームの表示有...
-
エクセル マクロ 別シートから...
-
ACCESSで別DBにあるクエリを...
-
最小化ボタンで最小化したフォ...
-
Excel vba 条件分岐 空白セルが...
-
ascW関数の結果がおかしい
-
メニューバーのイベントが2回...
-
GetAsyncKeyState() を利用する...
-
ExcelVBAで毎月月初の最初にBoo...
-
Excelで、チェックボックスにチ...
-
excel2010でボタンが反応しなく...
-
Excelのマクロ実行後に動作が重...
-
実行時エラー9 インデックスが...
-
Excel VBAのステップイン
-
ステップモードの動作確認方法
-
excelのvbaを使って日付を置換...
-
質問2回目になっちゃいます ex...
おすすめ情報