哪位能给讲一下为什么函数调用中参数中 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调试环境中查看对应的汇编代码