为数组分配范围非常简单。尽管如此,我还是发现了VBA意外表现的情况。我无法找到答案为什么会这样,所以我希望有人可以向我解释,为什么它不起作用。
任务:将范围(从打开的工作簿)分配给数组
工作代码
Dim vrtTabOEen () as Variant
Dim rngTabOEen as Range
With ThisWorkbook.Worksheets(Name_AB_Tab_Def_OEen)
Set rngTabOEen = .Range(Name_Tab_Def_OEen)
vrtTabOEen = rngTabOEen
End With
非工作代码
Dim vrtTabOEen () as Variant
With ThisWorkbook.Worksheets(Name_AB_Tab_Def_OEen)
vrtTabOEen = .Range(Name_Tab_Def_OEen)
End With
使用非工作代码,我会收到错误13:类型不匹配。
问题 为什么我必须将目标范围分配给类型'范围'在创建数组之前?
答案 0 :(得分:3)
由于Worksheets返回一个通用Object并且你没有指定value属性,你应该总是<你有太多层次的间接从Variant到Variant数组的隐式强制工作。 / strong>做。之一:
Dim vrtTabOEen () as Variant
With ThisWorkbook.Worksheets(Name_AB_Tab_Def_OEen)
vrtTabOEen = .Range(Name_Tab_Def_OEen).Value
End With
或:
Dim vrtTabOEen as Variant
With ThisWorkbook.Worksheets(Name_AB_Tab_Def_OEen)
vrtTabOEen = .Range(Name_Tab_Def_OEen)
End With
应该有用。