Sub maintest()
Dim a As Integer
a = 10
Call BaiSeisu(a)
End Sub
Sub BaiSeisu(aa As Integer)
aa = aa * 2
End Sub
--------------------------------------------------------------------------------
上はExcelのVBAのコードです。Subの方のByRef、ByValを省略するとByRefと
なるようです。maintestでCall BaiSeisuを呼んだ後はaの値が20になります。
省略するとどうなるか分からないので、出来るだけ省略しない方が良いのでしょう。
---------------------------------------------------------------------------------
Module Module1
Sub Main()
Dim a As Integer
a = 10
Call BaiSeisu(a)
Console.WriteLine(a)
Console.WriteLine(BaiSeisuF(a))
End Sub
Sub BaiSeisu(ByRef a As Integer)
a = 2 * a
End Sub
Function BaiSeisuF(ByVal a As Integer) As Integer
BaiSeisuF = 2 * a
End Function
End Module
---------------------------------------------------------------------------------
上はVBで書いたものですが、BaiSeisuはaを参照ですので、Mainのaが変わります。
BaiSeisuFの方はaの値は変更されません。ByValですからね。Functionなので
値はファンクション名に返されますね。VBAもVBとも出来るだけ省略しない方が解り
易いようです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます