質問: 標準モジュールで 『sub test(byval target as range)』は動かない? 選択されている複数のアドレスが知りたいので 標準モジュールに sub test(byval target as range) debug.print target.address end sub と書きました。 しかしf5ボタンを押しても何も起こりません。 デバッグ→コンパイルをしてもエラーになりません。 シートのイベントプロシージャーではなく 標準モジュールにした理由は イベント発生時ではなく、任意で起動させたいためです。 ためしに、 sub test(byval target as range) debug.print target.address end sub の下に、 sub test2() call test end sub と書いたら、 「引数は省略できません。」 というエラーになりました。 何がダメなのかわかりません。 ご教授よろしくお願い致します。
回答: excel vba の場合、引数を持つ sub を作成した場合、f5 を押しても実行はされません。function をつくり、cellに値を返させるほうが、作りやすいかと思います。 たとえば、 モジュールに、 public function tst(a as range) tst = a.address end function という関数をつくり (byval は普通つけません)、 sheet1 の a1 のセルに、=tst(a3:a6) と入力すると、以下の結果が返ります。 $a$3:$a$6