gpt4 book ai didi

Excel VBA - 单维数组的下标超出范围

转载 作者:行者123 更新时间:2023-12-02 15:35:37 25 4
gpt4 key购买 nike

这是一个非常简单的问题,但我已经为此绞尽脑汁一个小时了。我正在尝试执行以下操作:

  1. 从电子表格中的命名范围定义 VBA 数组
  2. 访问该数组中的项目

现在,如果命名范围恰好覆盖多维区域(行和列),那么这可以正常工作:

foobar = Range("two_dimensional_range")
MsgBox foobar(1,1)

但是,如果命名范围由单个维度(仅一列)数据组成,则会产生“下标超出范围”错误:

foobar = Range("one_dimensional_range")
MsgBox foobar(1)

我已经验证 foobar 确实是一个数组。我可以使用 For Each ... Next 迭代它。如果我调用 Ubound(foobar) 那么它会给我正确的大小。我只是无法直接访问其中的单个元素!

我做错了什么?

最佳答案

当您将范围(不是单个单元格)分配给变体数组时,它将始终是一个多维数组,因此此 MsgBox foobar(1,1) 仍将在第二个实例中工作。

查看此示例

Option Explicit

Sub Sample()
Dim Ar As Variant

Ar = Range("A1:A2")

Debug.Print Ar(1, 1)
Debug.Print Ar(2, 1)
End Sub

另一个例子

Option Explicit

Sub Sample()
Dim Ar As Variant

Ar = Range("A1:B2")

'~~> Get Values from Col A
Debug.Print Ar(1, 1)
Debug.Print Ar(2, 1)

'~~> Get Values from Col B
Debug.Print Ar(1, 2)
Debug.Print Ar(2, 2)
End Sub

关于Excel VBA - 单维数组的下标超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202905/

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