Excel2003でマクロを組んでいます。
ThisWorkbookにて、
With Menu1
.Controls.add Type:=msoControlButton
With .Controls(1)
.Caption = "手順1"
.OnAction = "Jikkou"
End With
End With
のように記述し、Menu1というオリジナルのメニューの中に、
「手順1」というメニューを表示させ、これを実行すると関数"Jikkou"が動くようにしました。
このJikkouという関数に、引数を持って行きたいのですが、
どのように記述すればよいでしょうか。
具体的には、異なるメニューを実行して同じ関数へ移動する際、
「どのメニューを選択してきたのか」によって、Jikkouの中で処理を分岐させたいのです。
引数を持たせられたら解決しそうだと思って質問しています。
他に何か方法があれば(例えば、それよりこちらの方が自然だ、のような方法があれば)教えていただきたいです。
以下、引数の持たせ方がわからず詰まった、自分の考えたコードです(勿論動きません)。
目的が伝われば幸いです。
---▼ThisWorkbookの一部---------------------------
With Menu1
.Controls.add Type:=msoControlButton
With .Controls(1)
.Caption = "手順1"
a = 0
.OnAction = "Jikkou a"
End With
End With
With Menu1
.Controls.add Type:=msoControlButton
With .Controls(2)
.Caption = "手順2"
a = 1
.OnAction = "Jikkou a"
End With
End With
---▼関数Jikkou------------------------------------
Sub Jikkou(byVal a as integer)
if a = 0 then
msgbox "手順1から来た"
elseif a = 1 then
msgbox "手順2から来た"
end if
End Sub
No.2ベストアンサー
- 回答日時:
> 挙げたコードに組み込むと、なぜかメッセージボックスが2回でますね。
あ、そうですね。
.OnAction = "'Jikkou(0)'"
ですね。
同様のことを引数を使用せずに実現する方法を御紹介。
With Menu1
.Controls.add Type:=msoControlButton
With .Controls(1)
.Caption = "手順1"
.OnAction = "Jikkou"
.Tag = 0
End With
End With
With Menu1
.Controls.add Type:=msoControlButton
With .Controls(2)
.Caption = "手順2"
.OnAction = "Jikkou"
.Tag = 1
End With
End With
Sub Jikkou()
On Error Resume Next
Select Case CommandBars.ActionControl.Tag
Case 0
msgbox "手順1から来た"
Case 1
msgbox "手順1から来た"
Case Else
msgbox "その他から来た"
End Select
End Sub
回答ありがとうございます。
前回のお礼時に書込んだURLの中の情報がタイミング良く(悪く)消えてしまったので少々困ってました。
お陰で解決いたしました。
しかし、同時に教えていただいたTagを利用する方法の方が使いやすいので、
こちらをメインに使っていきそうです。
ありがとうございました。
No.1
- 回答日時:
.OnAction = "Jikkou(0)"
.OnAction = "Jikkou(1)"
とか。
回答ありがとうございます。
エラーは出なかったし、引数として使えているようですが、
挙げたコードに組み込むと、なぜかメッセージボックスが2回でますね。
検索したところ関係ありそうな
http://www.moug.net/faq/viewtopic.php?t=28150
を見つけたので読んでみます。
お探しの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) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) Powerpointでランダムな数字の結果を表示するマクロ 2 2023/08/04 10:04
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel関数-文字列で自動作成さ...
-
エクセルの関数について教えて...
-
Excelデータをコピペして、ペー...
-
職場の人から聞かれており、こ...
-
ユーザー定義関数をアドイン登...
-
Excelで50個のセルに同じ文字を...
-
スプレッドシート、Excelでの数...
-
Microsoft Officeの中古は信用...
-
エクセルで不等号記号(≠)が上に...
-
スプレッドシートで使う数式を...
-
エクセルでの特別な文字を上に...
-
エクセル日付 文字列の関数がエ...
-
A列とB列を参照してC列に連番を...
-
エクセルVBA、別ブックへ転記す...
-
各ページの1番上の表示について
-
エクセルでセルに標準で入力さ...
-
EXCELの質問です 119から足した...
-
pdfの表をexcelにはりつけて計...
-
Excelのif関数で文字が見えなく...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ナポリの窯、ドミノピザ、必ず...
-
ネット未接続のPCでSDへの...
-
このアプリ内で友達を作ること...
-
5chの書き込みができなくなりま...
-
外付けSSDの使うにあたっての注...
-
ここに書き込みをしてる人は全...
-
掲示板等で確実に開示請求出来...
-
ここに回答される方って50代〜6...
-
YouTubeとかsnsの書き込みって...
-
Excel:メニューから関数に飛ぶ...
-
2ちゃんのニュース速報スレに...
-
愛知県の岡崎市に詳しい方、こ...
-
PS5とdiscordを接続したんです...
-
pingの疎通不可について
-
p directed-broadcastとip forw...
-
IPなしで、MACアドレスのみで通...
-
AI に “えっち” なことを聞いて...
-
夜間の高速道路の発煙物について
-
学校のパソコンでユーチューブ...
-
Yahoo知恵袋の規制は年々強まっ...
おすすめ情報