選択されている複数のアドレスが知りたいので
標準モジュールに
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
と書いたら、
「引数は省略できません。」
というエラーになりました。
何がダメなのかわかりません。
ご教授よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんばんは。
今回は、初歩的なことですが、段階を経たほうがよいと思います。つまみ食いのようなことをしても、なかなか、VBAもWSHも覚えられないと思います。しかし、今回のように単発では、こちらの書いていることはほとんど分かってもらえないと思います。
今回は、サブルーチンのコードですが、サブルーチンを書くということは、それなりに、その前段階を理解していなくてはなりません。イベント・ドリブン型とは関係がありません。
それと、Target は、予約語ではありませんが、イベント・ドリブン型の引数に使われているものですから、他の語を使ったほうがよいです。それを許していると、自分ですらコードが読めなくなっていくはずです。
今回のようなコードを実際に書くことはありえませんが、ByVal キーワードは、入れるのと入れないのでは違いがありますが、Test1 側で、引数のデータ型が決めてあれば、入れなくても構わないです。Debug.Print としてしまったら、さっぱり、その意味が見えないでしょうけれども……。
F5を押しても、サブルーチンは呼び出さないと動きません。
それに、呼び出す場合は、引数を入れなければなりません。
'-------------------------------------------
Sub Test1()
Dim c As Range '←これがあるので、ByVal は不要
For Each c In Range("A1:A10")
Call Test2(c)
Next c
End Sub
'サブルーチン(Target という名称は使わない)
Sub Test2(rng As Range)
Debug.Print rng.Address
'Debug.Print では、良く意味が分からないはずです。
'Range オブジェクトを引数にしたら、いろんな使い方がある
End Sub
'-------------------------------------------
No.2
- 回答日時:
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
”Excel VBA の場合、引数を持つ Sub を作成した場合、F5 を押しても実行はされません。”
しっかり覚えます!
ご回答ありがとうございます。
No.1
- 回答日時:
まず質問される時は、回答する側にわかるように書かれると回答し易くなると思いますよ。
恐らくExcelのVBAでの質問ではないかと推測し書かせてもらいますが、標準モジュールにプロシージャを書くこと自体は問題無いです。
>しかしF5ボタンを押しても何も起こりません。
これも推測ですが、標準モジュールのtestプロシージャをそのまま実行した?のではないかと思いますが、testプロシージャの引数のTargetに何も入れていない為、Range.Addressプロパティも何も返せず、イミディエイトウィンドウに何も表示されなかったのではないかと思います。
>デバッグ→コンパイルをしてもエラーになりません。
文法等に問題が無ければエラーは出ません。意図している事のチェックをコンパイルでは行えません。スキルアップしかないと思います。
>イベント発生時ではなく、任意で起動させたいためです。
testプロシージャの引数のTargetに値を入れて呼び出せば良いと思います。
ただ、シートのイベントプロシージャでは、自動的に引数(Target等)に値を入れてくれるので、その辺りを考慮しなければなりません。
具体的にはあえて書きませんが、ヒント・例として、アクティブなワークシートで選択したセルを引数に入れる等記述すれば良いのではないかと思います。
参考URL:http://www.relief.jp/itnote/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
Worksheet_Changeの内容を標準モジュールから実行するには?
その他(プログラミング・Web制作)
-
Excel VBA 標準モジュール内でイベント
その他(Microsoft Office)
-
-
4
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
5
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
6
エクセルVBAでシートモジュールでのパブリック変数
Excel(エクセル)
-
7
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
8
マクロを複数シートに実行するには?
Excel(エクセル)
-
9
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
10
特定の複数のシートに同じ処理をさせたい
Excel(エクセル)
-
11
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報