目次
参照渡し、値渡し
こんにちは。伊川(@naonaoke)です。
今回は、上の記事の続きになります。
参照渡し、値渡しになります。
NETで検索すると、結構な数がヒットしますが、イマイチ理解できません。
私も、すぐにサンプルファイルを作成できるわけでもありません。
私なりの言葉で説明したいと思います。
問題提起
(株)IKAWAの柄久 瀬瑠子(エク セルコ)は上司から、相談を受けました。
参照渡し、値渡しってなに?
どのように説明するといいだろうか?
解決策
回答
・現時点では、実際にプログラムを書いて、体感するしかない。
ユーザー定義関数
前回紹介したユーザー定義関数に関しては、値渡しで作成しました。
この値渡し、参照渡しを理解すると、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を入れるとバグになりにくいコードが書けます。
ここがポイント
ここがポイント
複雑な処理をする場合は、たくさんのユーザー定義関数を使います。その際に参照渡し、値渡しは、重要になります。何度もコードを書いて、理解していきましょう。
まとめ
今回のまとめ
上司に説明できなかった柄久 瀬瑠子(エク セルコ)です。しかし、VBA理解にもっと努めようと思いました。
今回のサンプルファイルは、No123です。
毎日の業務が、3時間短縮できます
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。