Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13551 / 13644 ツリー ←次へ | 前へ→

【4881】メニューバーからの引数 zero 03/4/12(土) 11:24 質問
【4883】Re:メニューバーからの引数 ポンタ 03/4/12(土) 15:11 回答
【4884】Re:メニューバーからの引数 りん 03/4/12(土) 17:57 回答
【4885】Re:メニューバーからの引数 zero 03/4/12(土) 18:56 お礼

【4881】メニューバーからの引数
質問  zero  - 03/4/12(土) 11:24 -

引用なし
パスワード
   こんにちは。

メニューバーに自作メニューを追加したプログラムを組み、どのメニューから実行したか取得して同じ関数で処理したいので、引数を指定して実行しようと考えたのですが、どのように"OnAction"設定すればいいかわかりません。
設定の仕方をご存知の方がおられましたらお願いします。


With Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, temporary:=True)
.Caption = "追加メニュー"
  With .Controls.Add
     .Caption = "メニュー1"
     .OnAction = "関数"
  End With
  With .Controls.Add
     .Caption = "メニュー2"
     .OnAction = "関数"
  End With
  With .Controls.Add
     .Caption = "メニュー3"
     .OnAction = "関数"
  End With
End With

【4883】Re:メニューバーからの引数
回答  ポンタ  - 03/4/12(土) 15:11 -

引用なし
パスワード
   OnAction と「関数」というプロシージャの橋渡しだけをする
プロシージャを作るという方法しか思い付きません。

  With .Controls.Add
     .Caption = "メニュー1"
     .OnAction = "関数1"
  End With
  With .Controls.Add
     .Caption = "メニュー2"
     .OnAction = "関数2"
  End With
  With .Controls.Add
     .Caption = "メニュー3"
     .OnAction = "関数3"
  End With

に書き換えて、

Sub 関数1()
  Call 関数(1)
End Sub

Sub 関数2()
  Call 関数(2)
End Sub

Sub 関数3()
  Call 関数()
End Sub

を書き加えたらどうでしょう?

【4884】Re:メニューバーからの引数
回答  りん E-MAIL  - 03/4/12(土) 17:57 -

引用なし
パスワード
   こんにちわ。

>>メニューバーに自作メニューを追加したプログラムを組み、どのメニューから実行したか取得して同じ関数で処理したいので、引数を指定して実行しようと考えたのですが、どのように"OnAction"設定すればいいかわかりません。
>OnAction と「関数」というプロシージャの橋渡しだけをする
>プロシージャを作るという方法しか思い付きません。

CommandBarsのActionControlプロパティを使えば、どのコマンドをクリックしたのかが取得できます。

使い方は
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=4774;id=excel

の下のほうにあります。

【4885】Re:メニューバーからの引数
お礼  zero  - 03/4/12(土) 18:56 -

引用なし
パスワード
   ▼ポンタ さん:
▼りん さん:

こんばんは。早速の回答ありがとうございます。
ポンタさんのやり方を始めに考えていたのですが、将来の拡張に備えたプログラムにしたかったので、ソースが追加になる仕様にはしないようにできないか考えていました。シートにテーブルを持っておいて、選択したメニューから、テーブルを検索して処理を行うようにして、ソースを変えなくてもテーブルに追加するだけで拡張できるようにしたかったのです。

りんさんのソースを使ってみましたが、すごいですね!
今回の質問とは関係ないですが、あんなふうにメニューを出すやり方を知らなかったので感動です。あのメニューはメニューバーで使うより、使いやすいなぁと一人で驚いています。勉強になりますm(__)m
Application.CommandBars.ActionControl.Captionプロパティでよかったんですね。

お二人ともありがとうございました。

13551 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free