同じ実行内容のマクロであっても押すボタンによって引数を渡せたら...って思うことはないですか?
私の場合は、下の画像の様に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 | ファイルを保存 |
詳しくは、また後日。
コメント