我不能打印水平范围。这是令人惊讶的,因为我的代码可以完美地用于垂直范围。我有什么不明白的?
Sub hello()
Dim i As Long
Dim enumTitles As Variant
Dim listTitles() As Variant
' enumTitles = ThisWorkbook.Worksheets("hello").Range("A1:A3")
' Works.
enumTitles = ThisWorkbook.Worksheets("hello").Range("A1:C1")
' Doesn't work.
listTitles = enumTitles
For i = LBound(listTitles, 1) To UBound(listTitles, 1)
Debug.Print (listTitles(i, 1))
'Only one result is displayed. Not three.
Next i
End Sub
我们的目标显然不是打印。它是为了重用它的值。
非常感谢你的帮助。
Excel range()函数将返回二维数组到Excel中。enumTitles.
所以,当你运行它的行时,代码会打印第一行的所有值,但是列是二维数组的第二维,这就是为什么你只收到第一行的值(第一行的所有值)。
对于Columns Loop,你必须使用第二维,如下所示。
' Use len of 2nd dimension
For i = LBound(listTitles, 2) To UBound(listTitles, 2)
' Loop by columnt ID
Debug.Print (listTitles(1, i))
Next i