エクセルのボタンから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つごとに呼び出すマクロの設定をする必要があり、とても面倒です

基本的には、この方法は使わず、下記ページで紹介した方法を使うことをおすすめします

エクセル基礎講座 「無料」動画マニュアル

「経理事務のためのエクセル基礎講座(初級編)」(動画マニュアル 総収録時間162分)を無料プレゼント中です!

このマニュアルで解説していることを一通り学べば、経理事務を行う上で最低限必要となる知識が得られます。

ご登録者の方には、合わせて、公認会計士が実体験を通して身に付けたエクセルを使う技をメールにてお伝えしていきます!

無料動画講座 登録フォーム

※ご登録頂いたメールアドレスに、エクセルを使いこなすための情報を配信するメールセミナー「エクセル倍速講座」も合わせて配信させていただきます。