gpt4 book ai didi

arrays - 使用 "With .. End With"将范围分配给数组

转载 作者:行者123 更新时间:2023-12-04 22:03:35 26 4
gpt4 key购买 nike

将范围分配给数组非常简单。尽管如此,我还是发现了一个 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:类型不匹配。

问题
为什么在从中创建数组之前必须将目标范围分配给“范围”类型的变量?

最佳答案

由于 Worksheets 返回一个通用对象并且您没有指定 value 属性,因此从 Variant 到 Variant 数组的隐式强制转换工作的间接级别太多,您应该 总是 做。任何一个:

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

应该管用。

关于arrays - 使用 "With .. End With"将范围分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29469437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com