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就会出现错误,出现我这样的情况。
    也从中看出来自己的缺点,要搞清楚各个函数,参数,属性等的含义,以免再出现类似的情况。**

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值