pickup

 

目次

参照渡し、値渡し

こんにちは。伊川(@naonaoke)です。

今回は、上の記事の続きになります。

参照渡し、値渡しになります。

NETで検索すると、結構な数がヒットしますが、イマイチ理解できません。

私も、すぐにサンプルファイルを作成できるわけでもありません。

私なりの言葉で説明したいと思います。

問題提起

(株)IKAWAの柄久 瀬瑠子(エク セルコ)は上司から、相談を受けました。

参照渡し、値渡しってなに?

どのように説明するといいだろうか?

解決策

回答
sesuo2.jpg
・現時点では、実際にプログラムを書いて、体感するしかない。

 

ユーザー定義関数

前回紹介したユーザー定義関数に関しては、値渡しで作成しました。

この値渡し、参照渡しを理解すると、VBAの中級クラスらしいです。

参照渡し、値渡し 作成手順その1 値渡しのコード


変数aは、メモリ上に存在します。

目には見えません。

この記憶している変数aの値は、1です。


この現象を値渡しといいます。

Sub 値()

Dim a As Long

a = 1
changea1 a
MsgBox a


End Sub


Sub changea1(n As Long)
n = 2
End Sub

 

参照渡し、値渡し 作成手順その2 参照渡しのコード


同じく、変数aの値はメモリ上に存在します。

変数の値は、1です。


Sub 参照()

Dim a As Long

a = 1
changea2 a
MsgBox a


End Sub


Sub changea2(ByVal n As Long)
n = 2
End Sub

参照渡し、値渡し 作成手順その3 通常は参照渡しを使う

これは、参照渡し、値渡しの理解できなくても、理解できると思います。

変数をカンタンに変更できる値渡しを利用すると、いつ、どこかでバグが発生するかわかりません。

基本的にはByValを入れて記載します。

例外的に値を書き換えたい場合のみByRefを入れるとバグになりにくいコードが書けます。

ここがポイント

ここがポイント
Function8.png

複雑な処理をする場合は、たくさんのユーザー定義関数を使います。
その際に参照渡し、値渡しは、重要になります。何度もコードを書いて、理解していきましょう。

 

まとめ

今回のまとめ
sesuko3.jpg
上司に説明できなかった柄久 瀬瑠子(エク セルコ)です。しかし、VBA理解にもっと努めようと思いました。

今回のサンプルファイルは、No123です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事