首页 > 代码库 > VBA自定义函数参数类型不符的错误

VBA自定义函数参数类型不符的错误

作者:iamlaosong

1、问题提出

编程中发现一个问题,系统总是提示编译错误,ByRef 参数类型不符,

可实际上参数定义没问题,原因在哪儿呢?

2、问题环境

假定函数定义如下:

Function get_kind(addr As String) As Integer
......

End Function

调用过程:

Sub check_address()
    Dim addr, new_addr(10000) As String
    

    ......
    addr = new_addr(i)

    ......
    kk = get_kind(addr)
    ......
 End Sub

3、问题原因

addr赋值后类型就不对了,虽然都是字符串,数组变量和单个变量不一样,编译系统就是报错。

找到原因问题就容易解决了:

方法一:强制转换,用Cstr(addr)

方法二:换个变量,先赋值myaddr=addr,再调用kk = get_kind(myaddr)

4、问题扩展

其它类型数组也存在同样的问题,这算不算是个BUG?