AccessのVBAで引数の渡し方を省略した時は参照渡しになるのでちょっと気を付けよう
本当か~?本当にそうか~?
確認コードのテンプレはこちら。
Option Compare Database
Option Explicit
Private Sub do_Click()
Dim str As String
str = "シャミ子"
'関数に渡す前
Debug.Print str
Call momo(str)
'関数に渡した後
Debug.Print str
End Sub
Private Function momo(arg As String)
arg = arg + "が悪いんだよ"
End Function
蛇足
別の言語からVBAに移ると、あれ?デフォルトってどっちだっけ?とか、ああ…VBAはデフォルトは参照渡しだったのね…、なんていろいろ間違えちゃうことあります。
『ByVal or ByRef を必ず付ける』というコード規約にすると良いかもですね。
VBE側で『ByVal』と自動補完してくれて、必要がある時だけ『ByRef』に変更、が一番ベストかなって思います。
できるだけ疎結合になるように。
参考サイトさん
バージョン
Windows10 Pro バージョン1909 OSビルド18363.1171
Access for Microsoft 365 MSO(16.0.13328.20262)32ビット
Author And Source
この問題について(AccessのVBAで引数の渡し方を省略した時は参照渡しになるのでちょっと気を付けよう), 我々は、より多くの情報をここで見つけました https://qiita.com/waokitsune/items/cb73c75195bc16e18afa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .