dポイントプレゼントキャンペーン実施中!

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

A 回答 (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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

前回のお礼時に書込んだURLの中の情報がタイミング良く(悪く)消えてしまったので少々困ってました。
お陰で解決いたしました。
しかし、同時に教えていただいたTagを利用する方法の方が使いやすいので、
こちらをメインに使っていきそうです。

ありがとうございました。

お礼日時:2008/12/03 13:43

  .OnAction = "Jikkou(0)"


  .OnAction = "Jikkou(1)"
とか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

エラーは出なかったし、引数として使えているようですが、
挙げたコードに組み込むと、なぜかメッセージボックスが2回でますね。
検索したところ関係ありそうな
http://www.moug.net/faq/viewtopic.php?t=28150
を見つけたので読んでみます。

お礼日時:2008/12/01 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!