Sub Add1(ByVal n As Integer)
  n = n + 100    
End SubSub Add2(ByRef m As Integer)
  m = m + 100  
End SubPrivate Sub Command1_Click()
Dim a As Integer
  a = 100
  Add1 (a)
  Text1.Text = a
   
  Add2 (a)
  Text2.Text = a
End Sub
    这段程序执行结果应该是什么?网上说因为add1是值传递方法,所以a的值不变应该是100,add2用的引用传递,所以a的值要变成200,但是我执行的结果是都为100啊??是怎么回事?
    还有个问题想请教大家,为什么我用byval的方式向一个dll里面传参数的时候虽然不会报错,但是收到的参数却不对,改为用byref就对了.知道的大侠们说说啊,谢谢了!

解决方案 »

  1.   

    看来很多人对VB的语法不够了解啊 
    调用过程有2种方法
    第一种:
    call subname(var1,var2..)
    第二种:
    subname var1,var2..
    假如只有1个 参数 并且你这样调用
    subname (var1)
    那么其中的var1就只不过是 "(var1)" 这个表达式中的1个变量而已所以这样只会按"(var1)" 这个运算式的值来传递修改如下:
    Sub Add1(ByVal n As Integer)
      n = n + 100    
    End SubSub Add2(ByRef m As Integer)
      m = m + 100  
    End SubPrivate Sub Command1_Click()
    Dim a As Integer
      a = 100
      Add1 a
      Text1.Text = a
       
      Add2 a
      Text2.Text = a
    End Sub