VBA6参数数组类型不匹配:调用evalexp提示需传入数组
调用evalexp传入xabc时类型不匹配的原因分析
你遇到的这个类型不匹配错误,核心原因是传入的数组维度和函数预期的维度完全不匹配,咱们结合代码细节拆解一下:
问题核心的两处矛盾
evalexp函数的实际需求和参数声明不一致
你在evalexp函数内部写了xyz(rnb, replnode).name——这是把xyz当成二维数组来使用(用了两个索引值),但函数参数里的声明却是xyz() As String,在VBA里这种写法默认是一维数组的声明,这就先埋下了维度不匹配的隐患。传入的xabc是一维数组,和函数实际需要的二维数组不兼容
BuildNFA的参数xabc () As String是一维字符串数组,当你调用evalexp(0, xabc)时,相当于把一个一维数组传给了需要二维数组的参数位置,VBA的强类型检查机制直接就抛出了类型不匹配的错误。
顺带提两个小问题(避免后续踩坑)
evalexp函数的返回值类型是String,但你最后赋值的是evalregexp = "",应该改成evalexp = "",否则会触发函数未返回值的编译警告。- 代码里的
replnode变量没有定义,运行时也会报错,记得补充变量声明或者给它赋值。
内容的提问来源于stack exchange,提问作者bobbibo
相关产品推荐
相关产品推荐

