Sub hoge()
Dim c As Long
c = 1
c = func_num(c)
Debug.Print c
func_num c
Debug.Print c
sub_num c
Debug.Print c
End Sub
'Function func_num(num As Long) As Long
'<変更前>参照渡し(実体参照):
' 呼び出し先のプロシージャ内で受け取った引数の値を変えたとき、呼び出し元のプロシージャ内の変数も影響を受ける
'<変更後>値渡し (値参照) :
' 呼び出し先のプロシージャ内で受けだった引数の値を変えても、呼び出し元のプロシージャ内の変数は影響を受けない
Function func_num(ByVal num As Long) As Long
num = num + 1
func_num = num
End Function
Sub hoge()
Dim c As Long
c = 1
c = func_num(c)
Debug.Print c
func_num c
Debug.Print c
sub_num c
Debug.Print c
End Sub
'Function func_num(num As Long) As Long
'<変更前>参照渡し(実体参照):
' 呼び出し先のプロシージャ内で受け取った引数の値を変えたとき、呼び出し元のプロシージャ内の変数も影響を受ける
'<変更後>値渡し (値参照) :
' 呼び出し先のプロシージャ内で受けだった引数の値を変えても、呼び出し元のプロシージャ内の変数は影響を受けない
Function func_num(ByVal num As Long) As Long
num = num + 1
func_num = num
End Function
田中 宏明さんの投稿
(投稿ID: 3976)
影響範囲(変数の有効範囲)を意識してコードを書くようになりました。
自己満足ですが、下記のようなことをして遊んでいます。
小川 慶一さんのコメント
(コメントID: 5530)
技術の高みを目指す取り組みは楽しいですよね v(^_^)
僕の場合は、ByRefで渡した複数の変数の値が呼び出し先プロシージャ内で書き換わるような書き方は避けるようにしています。
> 最近は、大規模なプログラミングを書き上げるテクニックとして、
> 影響範囲(変数の有効範囲)を意識してコードを書くようになりました。
> 自己満足ですが、下記のようなことをして遊んでいます。
>