所以我将10个字符串存储到数组中。然后我遍历一个工作表,并从位置10(第11个元素)开始向数组添加更多元素。工作正常。
arr = Array("Summary", "Account Summary", "Calendarization", "Vehicles", "Buildings", "Personal Comp", "Comp Equip", _
"Software", "Furn & Fixtures", "Alloc Deprec")
With ThisWorkbook.Worksheets("PrintTabCheck")
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 6 To lastRow
If .Cells(i, 4) <> 9999999 Then
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = .Cells(i, 2).Value
Debug.Print arr(UBound(arr))
End If
Next
End With
但有时我在循环之前不会先将任何内容存储到数组中,所以我想我可以在i-6
(位置0)开始填充数组,但我在行上run time error 13 type mismatch error
{ {1}}; _;
这是因为触发arr(i-6) = .Cells(i, 2).Value
的第一个单元格位于第9行而不是第6行。我尝试true
arr(i - 6 - b) = .Cells(i, 2).Value
,但仍然没有; _;
作为一种解决方法,我正在添加一个&#34;虚拟&#34;首先将字符串转换为数组,然后按上述方式复制。
b=3
但这是愚蠢的XD为什么我不能在第0位填充数组而不必求助于添加虚拟元素???
我将其声明为arr = Array("dummy")
With ThisWorkbook.Worksheets("PrintTabCheck")
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 6 To lastRow
If .Cells(i, 4) <> 9999999 Then
ReDim Preserve arr(UBound(arr) + 1)
arr(UBound(arr)) = .Cells(i, 2).Value
End If
Next
End With
答案 0 :(得分:1)
我希望这会有所帮助
>>> set([True, False])
set([False, True])