数组不会填充为0

时间:2015-10-09 14:58:27

标签: arrays excel excel-vba vba

所以我将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

1 个答案:

答案 0 :(得分:1)

我希望这会有所帮助

>>> set([True, False])
set([False, True])