循环VBA Excel结束时的空数组

时间:2015-02-27 12:16:18

标签: arrays excel vba excel-vba

我有以下代码,如果符合条件,则会向数组添加值。

它在一行中保持水平循环,然后为下一行重复相同的操作,依此类推。

我试图清除数组中累积的值并在列循环结束时将其清空:

For a = 21 To 23

    Count = 0
    For b = 2 To 36
    If Not Worksheets("Sheet1").Cells(a, b).Value = "A" And Not Worksheets("Sheet1").Cells(a, b).Value = "B" Then
    Count = Count + 1
    Else
    If Not Count = 0 Then

    Dim arr() As Long

    arrLen = 1
    ReDim Preserve arr(1 To arrLen)
    arr(arrLen) = Count
    arrLen = arrLen + 1

    For i = LBound(arr) To UBound(arr)
        msg = msg & arr(i) & vbNewLine
    Next i

    Count = 0
    End If
    End If
    Next b

    MsgBox Worksheets("Sheet1").Cells(a, 1).Value & vbNewLine & msg
    Erase arr 'not working

Next a

从上面的代码中可以看出,我得到一个msgbox,显示每个循环结束时的值,但是当它继续时,数组会越来越大,表明Erase行没有工作。

请帮忙!

1 个答案:

答案 0 :(得分:1)

您可以使用循环将数组元素设置为空,或者 ReDim 将数组设置为:

Sub marine()
    Dim arr()
    ReDim arr(1 To 2)
    arr(1) = "Alpha"
    arr(2) = "Beta"

    ReDim arr(1 To 1)
    arr(1) = ""
End Sub

这样,您可以稍后在子目录中重复使用相同的数组名称。