我正在尝试访问我正在通过Excel表上范围创建的变体的元素。基于"位置"表上的行数,我的范围中的行数是动态的,因此我只是声明一个变体,然后将其设置为相关范围。我使用与LOC前缀前缀的4个变量来查找边界,并在创建最终范围后设置变体。
但是,我无法通过多次尝试进行迭代。我敢肯定,我缺少一些基本的东西,但是尚未为每个迭代迭代而制造的lbound/ubound结构。变体数据是数字和文本的混合物。
您对我敢肯定我缺少的简单/简单事物的想法会受到赞赏。我了解每个人都是只读的,并且更喜欢阅读/写作,但是现在只想确保我可以通过此数组(真的,矩阵]
完全迭代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
您的设置LocColEnd
等于范围,然后将其作为列号参数传递给下一行中的范围函数。但是列号参数必须是一个整数。
Set LocColEnd = Worksheets("Locations").Cells(LocRowEnd.row, EndColInt)
Set LocSheetRange = Worksheets("Locations").Range(LocRowStart, LocColEnd)
您有一些纠正此问题的选项。最好的可能是仅将EndColInt
用作列的列数参数:
Set LocSheetRange = Worksheets("Locations").Range(LocRowStart, EndColInt)
这条线看起来也令人怀疑。我建议将行属性附加到末端:
LocRowEnd = Worksheets("Locations").Cells(Rows.Count, LocRowStart.Column).End(xlUp).Row