エクセルのボタンからVBAマクロに引数を渡す方法
エクセルのボタンからVBAマクロに引数を渡す方法
エクセルのシート上のボタンからVBAのマクロを起動するときに引数を渡すことができます。ただし、呼び出すマクロ・引数の情報を1つ1つのボタンごと個別に設定をする必要があり、手間がかかります。
複数のボタンの処理を1つのマクロで書くことが目的の場合には、この方法は使わず、下記ページで紹介した方法を使うことをおすすめします。
以下では、一応、エクセルのシート上のボタンからVBAのマクロを起動するときに引数を渡す方法を紹介します。
この記事の目次
ボタンを押して引数付きでマクロを起動する
事前準備
今回は、次のような図形オブジェクトをクリックしたときに、以下のマクロを起動させてみます。
Sub clicked(a_Value)
Debug.Print a_Value
End Sub
起動するのは「clicked」という名前のマクロです。
このマクロでは、引数として受け取った値をそのままイミディエイトウィンドウに表示します。
Subプロシージャ名と引数をシングルクォーテーションで囲って指定する
ボタンを押したときに、「Sub clicked」を「1」という引数を付けて呼び出すには、Subプロシージャ名と引数をシングルクォーテーションで囲って指定しましょう。
- 起動用ボタンの上で右クリックし「マクロの登録」をクリック
-
起動用ボタンの上で右クリックし「マクロの登録」をクリックします。
- マクロ名と引数を手入力する
-
引数を指定できるSubプロシージャは一覧に表示されません。
そこで、マクロ名と引数を手入力しましょう。このとき、マクロ名と引数全体をシングルクォーテーション「'」(Shift+7)で囲んでください。
今回は、「clicked」というSubプロシージャに引数「1」を渡して起動させるため、「'clicked 1'」と入力しました。
入力が終わったら「OK」をクリックして入力を確定してください。
これで、設定は終わりです。
実行してみる
ボタンをクリックしてみましょう。
すると、Visual Basic Editorのイミディエイトウィンドウに、引数で渡した「1」が表示されます。
まとめ
ボタンにマクロを登録するときに、マクロ名と引数を「'」で囲んで手入力すると、マクロに引数を渡すことができます。
似たような処理をする複数のボタンがあるときには、この方法で1つのマクロだけで複数のボタンに対する処理を書けるようになります。
ただし、この方法だと、各ボタン1つ1つごとに呼び出すマクロの設定をする必要があり、とても面倒です。
基本的には、この方法は使わず、下記ページで紹介した方法を使うことをおすすめします。