
お世話になります。
byvalとbyrefについてお伺いいたします。
以下テキストからの引用(加工)ですが、
上はメッセージボックスに200 下は100が表示されますが、
下はCall sample8(A)とsample8をわざわざ渡す必要はあるのでしょうか?
結果が変わらないなら、渡す必要がないのでは?と思います。
よって、どういう時にbyvalを使うのかイメージがつきません。
意味あるのでしょうか?
____________________
Sub test()
Dim A As Long
A = 100
Call sample7(A)
MsgBox A
End Sub
Sub sample7(ByRef b As Long)
B = B * 2
End Sub
_____________________
_____________________
Sub test2()
Dim A As Long
A = 100
Call sample8(A)
MsgBox A
End Sub
Sub sample8(ByVal B As Long)
B = B * 2
End Sub
_____________________
No.1ベストアンサー
- 回答日時:
結果を変えてほしくない場合に、byvalを使用します。
下記のsub1はAの値を2倍した結果をBに設定します。
sub1の中でAの値を変えていますが、呼び出し元のxの値変わりません。
100
200
とメッセージボックスに表示されます。
Sub test3()
Dim x As Long
Dim y As Long
x = 100
Call sub1(x, y)
MsgBox (x)
MsgBox (y)
End Sub
Sub sub1(ByVal A As Long, ByRef B As Long)
A = A * 2
B = A
End Sub
No.2
- 回答日時:
test と test2 って、ただの比較用サンプルマクロででは?
ByRefだと、飛んだ先のプロシージャで変更された値が戻ってきますよ。
ByValだと、飛んだ先のプロシージャで変更されてももとのプロシージャでは値は代わりませんよ。
と、挙動を確認するだけのもの。
(Msgbox は、結果を表示して違いを確認しやすくするために入れてあるだけ。)
Sub test2()
Dim A As Long
A = InputBox("数字を入力してください")
Call sample8(A)
Call sample9(A)
Call sample10(A)
End Sub
Sub sample8(ByVal B As Long)
【入力値 Aについての処理1】
End Sub
Sub sample9(ByVal B As Long)
【入力値 Aについての処理2】
End Sub
Sub sample10(ByRef B As Long)
【入力値 Aについての処理3】
End Sub
とか、同じ値で複数のプロシージャの並行処理させたいときなどにときに有効。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Illustrator 10の『データの書...
-
PDFの透明化テキストを抽出...
-
word
-
テキストの重複する行をすべて...
-
Illustratorのテキストの更新に...
-
イラレでダブルクリックで文字...
-
iMovieでテキストと画像を同時...
-
「FLASH MX」文字と画像が一緒...
-
韓国語字幕の作り方おしえてく...
-
フォトショップで複数テキスト...
-
リッチテキストドキュメントに...
-
Illustratorテキストエリアへ塗...
-
IME2002が機能しない
-
davinci resolveを使っているの...
-
画像からテキストデータを正確...
-
テキストリンクにするか?バナ...
-
Outlook Expressのメールをまと...
-
pdfファイルから抽出できるテキ...
-
テキストファイルを開かないで...
-
Microsoft Access で同じフィー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
word
-
illustratorとExcelは連携出来...
-
PowerPoint SmartArtの箇条書...
-
バイナリファイルの編集
-
イラレでダブルクリックで文字...
-
Microsoft Access で同じフィー...
-
Publisherをエクセルファイルに
-
Illustratorテキストエリアへ塗...
-
Chromebookでオフラインでテキ...
-
イラレの古いバージョンのファ...
-
画像からテキストデータを正確...
-
PDF-XChange Viewer のタイプラ...
-
フォトショップで複数テキスト...
-
Accessテーブルの結合で別々の...
-
フォトショップで文字に遠近感...
-
pdfファイルから抽出できるテキ...
-
exe bat
-
パワーポイントでテキストボッ...
-
davinci resolveを使っているの...
-
Excel VBAで改行を含む文字列を...
おすすめ情報