| 引数の渡し方には値渡しと参照渡しがあります |
| 普通に関数を作成すると |
| 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 ... | ||||
| 参照渡し | |||||
| 値渡しでは、引数に指定した値はコピーされるため、呼び出した関数で引数として受け取った値を変更しても |
| 呼び出し元の変数には影響を受けません |
| 参照渡しでは、引数に指定した値の参照アドレスを渡すため、呼び出した関数でも同じアドレスの変数を処理 |
| することになり、呼び出し元に戻ったときに、変数の値は変わっている可能性があるのです |