byVal是值传,就是实参接收的是一个数值.对这个参数的修改无效不能返回值.
byRef是址传,就是实参接收的是一个地址.对这个参数的修改有效可以返回修改后的值.

解决方案 »

  1.   

    在VB中可以不考虑这两种差别! 
    在C语言和其它需大量使用指针的语言中才要特别注意!!!
      

  2.   

    VB可以使用指针,只不过微软认为很危险,就不再MSDN中说明那些函数。
    取得函数指针:AddressOf 函数名
    取得对象指针:ObjPtr(对象)
    取得字符串指针:StrPtr
    取得其它类型的指针:VarPtr
      

  3.   

    同意Eastunfail(东方不败) 
    VB只是不能显式声明指针而不是不使用指针,事实上在很多时候必须使用指针传递变量,也就是使用ByRef方式传递参数。例如要获得修改后的实参值;传递对象参数、数组参数等都必须用ByRef。
    to:wangzepeng 你可以自己写一些过程,分别使用ByVal和ByRef传递参数,观察一下返回值的变化,可以明白两者之间的区别。
      

  4.   

    有时用函数时程序提示出错然后加一个byval就好了,为什么?
      

  5.   

    非数值型变量
    都要用
    byref

    Type
    Object
    Control
      

  6.   

    另外Byval 还会在调用时用。
    即当你将指针存入Long 变量中
    并传给指针参数的API 函数时须用Byval
    如:
    CopyMemory ByVal StrPtr(LPSTRtoBSTR), ByVal lpsz, cChars