• ベストアンサー

Excel:「フォーム」のボタンで引数を渡すプロシージャは呼べないですか?

Win2K、Excel97-2000-2002を使用しています。 Book1.xlsに固定文字列のメッセージボックスを表示するプロシージャ "A" を作成しました。 Book2.xlsのSheet1上に「フォーム」コントロールボックスのボタンを貼り付けました。 マクロの登録でBook1.xls!Aを指定しました。 ボタンを押下すると、固定長文字列のメッセージボックスが表示されます。 このプロシージャ "A" に引数を持たせ、 任意のセルの値を渡したいと思っているのですが、 「フォーム」コントロールのボタンでは、引数を渡すことは不可なのでしょうか。 御教授、御鞭撻の程、何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

まずどんな値を引数にしたいのでしょうか? グローバル(public)で固定文字列を表示する内容を保持しておき 表示すれば良いのでは? あるいはボタンを押したプロシジャーの中に別に関数をつくるとか。 例えば現在のセル位置を引数にしたいと考えているなら 引数ではなくプロシジャー内部でセル位置を取得します。 'グローバル変数 Public A As String Private Function ArgFnc(sval As String)  Call MsgBox(sval) End Function 'ボタン1を押す処理 Private Sub CommandButton1_Click()  Call ArgFnc(A) End Sub _Click()はボタンを押したことに対するイベントなわけで それ以外の情報は何もありません。 VBAの仕様的に不可能と思ってください。

o_w_nakazaki
質問者

お礼

ご回答ありがとうございます。 単純に文字列を渡したかったのですが、 やはりフォームコントロールでは無理なのですね。

その他の回答 (1)

  • hisako27
  • ベストアンサー率9% (10/104)
回答No.2

>「フォーム」コントロールのボタンでは、引数を渡すことは不可なのでしょうか 不可能だと思います。 標準モジュールに共通関数を作ってはいかがでしょうか? (1)ボタンのイベントで共通関数を呼び出す。 Private Sub CommandButton1_Click() Call ボタン押下("Button1") End Sub Private Sub CommandButton2_Click() Call ボタン押下("Button2") End Sub (2)標準モジュールに共通関数を定義。 Sub ボタン押下(caption As String) Select Case caption Case "Button1" MsgBox "Button1" Case "Button2" MsgBox "Button2" End Select End Sub

o_w_nakazaki
質問者

お礼

ご回答、ありがとうございます。 今後の参考にさせていただきます。

関連するQ&A