VB问题——ByRef参数类型不符

**## vb问题——ByRey参数类型
  今天上午学习vb关于过程的这一章节时,在敲书中例子时,由于我的不小心,把其中两个代码给敲错了,引发了下面图中的问题。BYRef参数不符
  然后,我就去查找相关资料,寻求什么叫ByRef参数类型不符,它代表的含义是什么?在什么情况下会造成ByRef参数类型不符?
  
  1.传递传递参数未定义类型,如果参数在调用前未定义类型,系统自动将它定义为variant类型,由于与过程或函数中的对就参数类型不相同,所以提示"byref参数类型不符"
  
  2。传递参数类型已经定义,但由于定义方法不对,所以提示"byref参数类型不符"。具体情况如下:
  
   当vb中如此定义变量时,将会出现以上错误信息的出现

Private Sub Command1_Click()
    Dim m As Integer, n As Integer
    Dim c As Long, fac As Long
    m = Text2.Text: n = Text1.Text
   Call fact(m, fac)
    c = fac
    Call fact(n, fac)
    c = c / fac
    Call fact(m - n, fac)
    c = c / fact
        Text3.Text = c
        
End Sub
Public Sub fact(x As Integer, p As Integer)
Dim i As Integer
    p = 1
    For i = 1 To x
        p = p * i
    Next i
End Sub

这是我出错之前的代码,经过查询参考他人的解释,找到了错误之处。
   1.把Public Sub Fact(x as integer,p as integer)  修改成  Public Sub  fact(x  As  Integer, p  As  Long) 
   因为我此处Call fact(n,fac)中fac使用的是Long(长整型),所以函数也要用Long
   2.把 c =c/fact   改为 c =c/fac
   这改的意思是说我fact使用的是函数,它需要用参数  
   
   这样程序执行正常。也就是说,我的错误符合第二种,虽然给它定义了,但是没有正确的认清楚所需要定义的内容,结果导致出错。
    
    从中学到:一般在过程和函数中定义参数时采用ByRef,则需要参数生命的类型和实际参数的类型完全相同,否则VB就会出现错误,出现我这样的情况。
    也从中看出来自己的缺点,要搞清楚各个函数,参数,属性等的含义,以免再出现类似的情况。**

发布了29 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/dyh17dingyuhao/article/details/104198162