【发布时间】:2017-03-13 20:00:45
【问题描述】:
我正在尝试访问我通过 Excel 工作表上的范围创建的变体的元素。我的范围内的行数是动态的,基于“位置”表上的行数,所以我只需声明一个变体,然后将其设置为等于相关范围。我使用以 Loc 为前缀的 4 个变量来查找边界并在创建最终范围后设置变量。
但是,我无法重复多次尝试。我确信我遗漏了一些基本的东西,但尚未使 For Each 或 For LBound/UBound 结构适用于数组迭代。变体数据是数字和文本的混合体。
感谢您对我确信我缺少的简单/简单的事情的想法。我知道 for each 是只读的并且更喜欢读/写,但现在只是想确保我可以遍历这个数组 [真的,一个矩阵]
Sub Prefill_Work_Sub()
' Variables
Dim LocRowStart As Range
Dim LocRowEnd As Range
Dim LocSheetRange As Range
Dim EndColInt As Integer
Dim LocationsVariant As Variant
' Ending Column Index Set
EndColInt = 72
' First, make range of location sheet
Set LocRowStart = Worksheets("Locations").Range("A2")
Set LocRowEnd = Worksheets("Locations").Cells(Rows.Count, LocRowStart.Column).End(xlUp)
Set LocColEnd = Worksheets("Locations").Cells(LocRowEnd.row, EndColInt)
Set LocSheetRange = Worksheets("Locations").Range(LocRowStart, LocColEnd)
Set LocationsVariant = LocSheetRange
' Verify the range address of the variant
' Debug.Print LocSheetRange.Address
For i = LBound(LocationsVariant) To UBound(LocationsVariant)
Debug.Print LocationsVariant(i, 1)
Next i
' Let's try to iterate through variant for a sec
' Debug.Print LocationsVariant(1, 1)
' Debug.Print LocationsVariant(2, 1)
End Sub
【问题讨论】:
-
您尚未为
LocationsVariant设置值。你的意思是给它分配一个范围的值吗? -
@TimWilliams 我刚刚编辑并添加了该行。它在我的代码中,但在帖子中意外删除。因此,一旦我使用 lbound() / ubound() 遇到类型不匹配错误
-
如果要获取二维数组,在赋值时不要使用
Set。否则,您将创建另一个 Range 类型的变量 -
@TimWilliams Doh,谢谢。要是我尝试过就好了……感谢您的帮助。
-
也不要忘记迭代你的值数组的二维。