エクセルVBAのByRefとByValの
あなたは、参照することにより、または値により手続き(関数やサブ)に引数を渡すことができます。デフォルトでは、ExcelのVBAは、参照で引数を渡します。いつものように、私たちは、物事をより明確にするために簡単な例を使用します。
ワークシート上のコマンドボタンを配置し、次のコード行を追加します。
Dim x As Integer x = 10 MsgBox Triple(x) MsgBox x
コードが機能トリプルを呼び出します。それは我々が機能をモジュールに配置する必要があります。に興味を持っている第二のMsgBoxの結果です。
-
Visual Basicエディターおよび挿入モジュール]をクリックします。
次のコード行を追加します。2.:
Function Triple(ByRef x As Integer) As Integer x = x 3 Triple = x End Function
あなたはシート上のコマンドボタンをクリックすると、結果:
ByValのでByRefのを交換して3.。
Function Triple(ByVal x As Integer) As Integer x = x 3 Triple = x End Function
あなたはシート上のコマンドボタンをクリックすると、結果:
説明:参照で引数を渡すとき、我々は、元の値を参照しています。 X(元の値)の値が関数に変更されます。私たちは関数にコピーを渡している値で引数を渡すときに結果として第二のMsgBoxは、30の値を表示します。元の値は変更されません。その結果、第二のメッセージボックス10(元の値)の値を表示します。