Excel VBA:ByRef参数类型不匹配报错,命名区域是否为有效区域?
解决VBA中“ByRef参数类型不匹配”错误
错误原因1:变量声明不规范
在VBA里,Dim r1, r2 As Range这种写法只会把r2声明为Range类型,r1会被默认判定为Variant类型。而NewRange函数要求传入Range类型参数,VBA默认参数传递方式是ByRef(按引用传递),此时Variant类型的r1无法匹配Range类型参数,直接触发“ByRef参数类型不匹配”错误。
错误原因2:Offset方法调用错误
Offset(rng, 1, 1)不符合VBA语法,Offset是Range对象的成员方法,必须通过Range对象调用,正确写法应为rng.Offset(1, 1)。
修正后的完整代码
Option Explicit Sub test() Dim r1 As Range, r2 As Range ' 每个变量单独指定类型 Set r1 = Worksheets("MySheet").Range("MyNamedRange") Set r2 = NewRange(r1) End Sub Function NewRange(rng As Range) As Range Set NewRange = rng.Offset(1, 1) ' 通过Range对象调用Offset方法 End Function
内容的提问来源于stack exchange,提问作者Jason D.
相关产品推荐
相关产品推荐

