ダイアログでフォルダを指定

ページ番号: 1 2 3

■ボタンを作成

ちなみに、Excelシートにボタンを配置するのは、[開発] – [挿入] からフォームコントロールにあるボタンで作成してください!

広告

※ActiveXコントロールでもいいんですけど・・ねぇ!?w

ダイアログでフォルダを指定 1
ボタンはフォームコントロールで!

このフォームコントロールのボタンは、シートに置くなり、マクロ登録画面が出てきて、マクロ名が『ボタン1_Click』となっています

「キャンセル」ボタンで閉じてくださいw (※もちろん、既に呼び出すマクロを作成済みであれば問題ないですが!)

ダイアログでフォルダを指定 2
突然開くマクロ登録画面

ちなみに、配置したボタンを選択すると、左上の名前ボックスに『ボタン 1』と表示されているのがわかります(※これが先ほどのマクロ名に使用されています)

ダイアログでフォルダを指定 3
名前ボックス

ここを選択して、書き換えるとボタンの名前が書き変わります!(※ボタンに表示する文字列が変わるわけではありません)

ダイアログでフォルダを指定 4
名前ボックスで名前を選択

それらしく『SelectFolderButton』と変えてみました

ダイアログでフォルダを指定 5
名前を変更

そうすると何が起こるかというと、お気づきとは思いますが、この「参照」ボタンを右クリックして、「マクロ登録」を選択すると、マクロ登録画面のマクロ名が、「SelectFolderButton_Click」となってくれます

ダイアログでフォルダを指定 6
マクロ名

■マクロを作成

「新規作成」ボタンを押下すれば、VBE(Visual Basic Editor)にマクロ名で関数定義部が作成されます

ダイアログでフォルダを指定 7
マクロ名での宣言

このマクロ名の関数から先ほど作成した「フォルダ参照ダイアログボックスを呼び出す関数」を呼び出して(ややこしいなw)、関数の戻り値を表紙シートの「カレントフォルダ」のところに出力すれば良いのです!

Sub SelectFolderButton_Click()
    ActiveSheet.Range("F3").Value = UseFileDialogFolderPicker
End Sub

簡単に書くとこうなりますw

しかし、『”F3″』ってのをハードコーディングしたくない人が多いと思います!

よくやるのは、Constを定義して、定義名で『”F3″』を置き換える人は多いですよねー?

でもその場合、カレントフォルダの入力欄を別の場所に移動させたり、上に行を挿入したりすると、その都度、VBEを開いてソースを書き換えないといけません

人によっては、この『”F3″』を更に、設定用のシートに定義したりする人もいますが・・

今回はシンプルに関数の引数で受け取りましょう!

広告

■マクロ関数に引数を設定する

・・・マクロの呼び出し関数に引数を付ける!?

マクロ関数に引数を付けるのが気持ち悪いと人もいるかもしれませんが、シート側だけで修正できるので、意外とメンテナンス性は高いのですよー

まずは、再度「マクロ登録」を以下のようにやり直します!

  • マクロ名の後ろに半角スペースを空ける
  • 引数はダブルクォーテーション 「” 」で囲む
  • マクロ名と引数全体をシングルクォーテーション「’」で囲む
ダイアログでフォルダを指定 8
マクロ再登録

引数で渡すのは、セルのアドレス『”$F$3″』とします

あとは、マクロ名の関数に引数を追加して終了です

Sub SelectFolderButton_Click(rng As String)
    ActiveSheet.Range(rng).Value = UseFileDialogFolderPicker
End Sub

注意すべき点は、以下の順で行ってください

  1. マクロ登録で引数を設定
  2. マクロ名関数に引数を追加

逆にすると、マクロ登録時に、マクロ名の関数が表示されません (※本来、マクロ名で指定できるのは、引数を持たない関数ですので・・)

ページ番号: 1 2 3
広告

やもす ʕ•͡-•ʔ

のんびり!のほほん!がモットーです!w 蕎麦食いたい ライブ行きたい 暑いの嫌い

シェアする