看例子最好。
可以参考下面已解决的问题,有详细的例子分析:
http://zhidao.baidu.com/question/22259651.html?si=4
http://zhidao.baidu.com/question/26137604.html?si=1
简单说,就是:
有ByVal关键字,即传值,不改变实参的值。[另外复制了一份变量值给过程或函数使用]
而有ByDef关键字(默认),即传址,会改变实参的值。 [直接调用变量作为参数]
简单点说,传址过去的话其值可以被该函数或过程改变,传值则不会。
如
Private Sub Command1_Click()
Dim a As Integer
a = 3
Call test(a)
Debug.Print a '这时结果为5
End Sub
Sub test(ByRef chgA As Integer)
chgA = 5
End Sub
我的理解是:byval在传值时,内存的地址新的
bydef则在原来的位置重新刷新数据