**## vb问题——ByRey参数类型
今天上午学习vb关于过程的这一章节时,在敲书中例子时,由于我的不小心,把其中两个代码给敲错了,引发了下面图中的问题。
然后,我就去查找相关资料,寻求什么叫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就会出现错误,出现我这样的情况。
也从中看出来自己的缺点,要搞清楚各个函数,参数,属性等的含义,以免再出现类似的情况。**