【Excel VBA】ボタンで引数を渡してマクロを実行する方法

同じ実行内容のマクロであっても押すボタンによって引数を渡せたら...って思うことはないですか?

私の場合は、下の画像の様にB2セルの「▼」をクリックすると、フォルダを参照するダイアログを表示させて選択したフォルダパスをB3セルに転記させるコードを書いたのですが、同じ動作をB3セルにボタンを設置しC4セルに結果を表示させたかったのです。

でも、行番号が違うだけで同様のコードを増やしていくのもなぁ...

ボタンで引数を渡せればいいのでは。と思い書いてみました。

Sub フォルダを選択(row As Integer)
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            Cells(row, 3).Value = .SelectedItems(1)
        End If
    End With
End Sub

プロシージャ名の後の()内に引数の情報を記入します。

今回は、(row As Integer) としました。 rowは変数名で後ほど変数rowに引き渡されます。

この変数の値を渡すのが、ボタンにマクロを登録する時に設定します。

ブック名!‘マクロ名”引数”’

下の図のように、引数を設定するとマクロに引数を渡してくれます。

今回は、2行目のボタンなので”2”を渡します。

これで、無事B2セルのボタンで実行したマクロの結果をC3セルに表示することができました。

ちなみに、【FileDialog】オブジェクトの参考となりそうな内容を載せておきます。

fileDialogType動作
msoFileDialogFilePickerファイルを選択
msoFileDialogFolderPickerフォルダを選択
msoFileDialogOpenファイルを開く
msoFileDialogSaveAsファイルを保存

詳しくは、また後日。

コメント

タイトルとURLをコピーしました