哪位能给讲一下为什么函数调用中参数中 byval 变量名 这种格式是正确的 而用 byref 变量名 这种格式时提示 缺少表达式。该怎么处理
哪位能给讲一下为什么函数调用中参数中 byval 变量名 这种格式是正确的 而用 byref 变量名 这种格式时提示 缺少表达式。
有如下一个函数
Private Function s(Byref d As Long) As Long
Dim m As Long
m = d
End Function
以下是某个调用此函数的过程
Private Sub Command1_Click()
dim a as long ,b as long
c=1234
a=s(byval c)
a=s(byref c)
End Sub
为什么 a=s(byval c) 没有问题,而写完 a=s(byref c)就直接提示 缺少表达式,且byval处理选中状态。
------解决方案--------------------
byref要求变量类型一样,c是Variant,要的是long
------解决方案--------------------
函数定义中已经ByRef了,而且这个是vb默认的,调用的时候直接调用就是了。
而ByVal不报错,也不明白。
Private Sub Command1_Click()
dim a as long ,b as long
c=1234
a=s(byval c)
a=s(c)
End Sub
这样应该跟你代码效果一样。
------解决方案--------------------
想从本质上搞清除ByVal和ByRef的区别请在VC调试环境中查看对应的汇编代码
有如下一个函数
Private Function s(Byref d As Long) As Long
Dim m As Long
m = d
End Function
以下是某个调用此函数的过程
Private Sub Command1_Click()
dim a as long ,b as long
c=1234
a=s(byval c)
a=s(byref c)
End Sub
为什么 a=s(byval c) 没有问题,而写完 a=s(byref c)就直接提示 缺少表达式,且byval处理选中状态。
------解决方案--------------------
byref要求变量类型一样,c是Variant,要的是long
------解决方案--------------------
函数定义中已经ByRef了,而且这个是vb默认的,调用的时候直接调用就是了。
而ByVal不报错,也不明白。
Private Sub Command1_Click()
dim a as long ,b as long
c=1234
a=s(byval c)
a=s(c)
End Sub
这样应该跟你代码效果一样。
------解决方案--------------------
想从本质上搞清除ByVal和ByRef的区别请在VC调试环境中查看对应的汇编代码