加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

byref参数类型不符

(2018-06-24 13:58:01)
标签:

byref参数类型不符

分类: 程序设计_VB

在vb中执行过程或函数时,提示"byref参数类型不符" 

分析问题主要由于对应参数的类型不符造成的。造成这种情况一般有几种情况:

1。传递参数未定义类型,如果参数在调用前未定义类型,系统自动将它定义为variant类型,由于与过程或函数中的对就参数类型不相同,所以提示"byref参数类型不符"

2。传递参数类型已经定义,但由于定义方法不对,所以提示"byref参数类型不符"。具体情况如下:

      当vb中如此定义变量时,将会出现以上错误信息的出现

      private sub command1_click()
           dim i , j as integer
           i = 3
           j = 4
          call get1(i, j)
          text1.text = i
      end sub

     private sub get1(byref para1 as integer, para2 as integer)
         para1 = para1 + para2
     end sub

     如果将 dim i , j as integer 改为

       dim i  as integer  

       dim i  as integer

      程序执行正常。也就是说,第一种方法的变量定义,只是对 j 做了定义,并未对前面的 i 进行定义

      一般在过程和函数中定义参数时采用byref,则要求参数声明的类型和实际参数的类型完全相同,否则vb就会报告错误。


参考资料:http://www.sudu.cn/info/html/edu/net/20071226/24393.html
通过上面的资料可以理解VB中变量定义如果已经是 Option Explicit 强制精确类型的话,一定每个变量都要明确定义类型,而不能为了图省事,把几个变量一起定义。
Dim  a ,b as  integer 与  Dim a as integer,b as integer两个变量定义如果没有强制类型,个人感觉应该是一样的,但如果是强制类型了,在子程序或函数调用时,就会因为参数没有指定具体类型而发生“byref参数类型不符”的错误提示。
例如:
定义一个函数
Function Plus _N(e)
函数体
End Function
另外一种在参数中上体定义了参数类型

Function Plus _N(Integer e)
函数体
End Function
 
在调用这两个函数里,第一种定义叁数e是variant,可以任意指定,错了也不会报错,第二种的定义参数e一定要精确指定类型,不然就会出现上面的报错。
 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有