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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ExeclVBAユーザーフォームから右クリックでショートカットメニューで困っています。
Visual Basic(VBA)
-
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
マクロVLOOKUPの高速化
Excel(エクセル)
-
-
4
VBA 2回実行してしまう?
Windows 7
-
5
vba Listviewでのチェックボックスのイベントを教えてください
Excel(エクセル)
-
6
vba listviewにおけるtextのAlingmentを中央にしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
別のフォームで記述している関...
-
Excel vba 条件分岐 空白セルが...
-
ACCESSで別DBにあるクエリを...
-
Visual Basic 6.0のフォームの...
-
円の中に等間隔に線を引くには
-
ascW関数の結果がおかしい
-
Excelのマクロ実行後に動作が重...
-
続き…エクセルvba ①SUBメニ...
-
Sub Auto_Open() 実行されない
-
最小化ボタンで最小化したフォ...
-
Switchのわんことあそぼ、めざ...
-
エクセルで条件をつけて図形を...
-
ワードで、グレーの部分しか入...
-
エクセルでの6ヶ月平均の出し方
-
メフィスト賞の応募歴は無しだ...
-
Fnキーを使わないとF1キーが押...
-
ホームページビルダーで価格.c...
-
複数のセルと複数のセルの入力...
-
MusicVampireの招待コード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 作業後に選択範囲...
-
エクセル マクロ 別シートから...
-
別のフォームで記述している関...
-
Sub Auto_Open() 実行されない
-
ACCESSで別DBにあるクエリを...
-
最小化ボタンで最小化したフォ...
-
円の中に等間隔に線を引くには
-
Excel VBAのステップイン
-
VBAでのユーザフォームの表示有...
-
ascW関数の結果がおかしい
-
Excelで、チェックボックスにチ...
-
メニューバーのイベントが2回...
-
ステップモードの動作確認方法
-
excel2010でボタンが反応しなく...
-
ExcelVBAで毎月月初の最初にBoo...
-
ExcelVBA ドロップボックスで月...
-
Excelのマクロ実行後に動作が重...
-
エクセルVBAのコードで質問です...
-
実行時エラー9 インデックスが...
-
excelのvbaを使って日付を置換...
おすすめ情報