引数の渡し方には値渡しと参照渡しがあります |
普通に関数を作成すると |
Private Function Test1 (atai As Integer) As Boolean |
のように記述しますが、この場合、引数 atai は渡し方を指定していないため、参照渡しとなっているのです |
上記を明示的に記述するのであれば、ByRef atai As Integer となります |
逆に値渡しにする場合には ByVal atai As Integer となります |
この2つは意味がまったく違ったものになるので、正確に把握しておきましょう |
| コピーされる → |
| |||
Call Test1(atai) | Function Test1(ByVal atai ... | ||||
値渡し | |||||
| 参照アドレスを渡す → | ||||
Call Test1(atai) | Function Test1(atai ... | ||||
参照渡し |
値渡しでは、引数に指定した値はコピーされるため、呼び出した関数で引数として受け取った値を変更しても |
呼び出し元の変数には影響を受けません |
参照渡しでは、引数に指定した値の参照アドレスを渡すため、呼び出した関数でも同じアドレスの変数を処理 |
することになり、呼び出し元に戻ったときに、変数の値は変わっている可能性があるのです |