循环步骤后变量不为空

时间:2015-02-25 15:54:04

标签: excel vba

我想计算列中的数据字符,所以我使用for循环来完成它。 以下是我的代码示例:

Sub CharCount()
    Dim Counter As Long

    For Counter = 1 To 257 Step 1
        Dim SumA As Variant
        Dim SumB As Variant
        Dim SumC As Variant
        SumA = 0
        SumB = 0
        SumC = 0
        Dim j As Long
        For j = Counter To Counter * 257 Step 1
            SumA = SumA + Len(Cells(j, 1))
            SumB = SumB + Len(Cells(j, 2))
            SumC = SumC + Len(Cells(j, 3))
        Next j
        Range("E" & Counter) = SumA
        Range("F" & Counter) = SumB
        Range("G" & Counter) = SumC
        SumA = Null
        SumB = Null
        SumC = Null
    Next Counter
End Sub

正如您所看到的,我尝试使用Null变量求和,但它似乎无法工作,并且在循环的每个步骤之后,这些变量只是堆叠前面步骤的值。我怎样才能使变量空?

我已经尝试过这些版本的代码:

1:

Sub CharCount()
    Dim Counter As Long

    For Counter = 1 To 257 Step 1
        SumA = 0
        SumB = 0
        SumC = 0
        Dim j As Long
        For j = Counter To Counter * 257 Step 1
            SumA = SumA + Len(Cells(j, 1))
            SumB = SumB + Len(Cells(j, 2))
            SumC = SumC + Len(Cells(j, 3))
        Next j
        Range("E" & Counter) = SumA
        Range("F" & Counter) = SumB
        Range("G" & Counter) = SumC
    Next Counter
End Sub

2:

Sub CharCount()
    Dim Counter As Long

    For Counter = 1 To 257 Step 1
        SumA = 0
        SumB = 0
        SumC = 0
        Dim j As Long
        For j = Counter To Counter * 257 Step 1
            SumA = SumA + Len(Cells(j, 1))
            SumB = SumB + Len(Cells(j, 2))
            SumC = SumC + Len(Cells(j, 3))
        Next j
        Range("E" & Counter) = SumA
        Range("F" & Counter) = SumB
        Range("G" & Counter) = SumC
        SumA = 0
        SumB = 0
        SumC = 0
    Next Counter
End Sub`

第一版和第二版对我不起作用。

UPD。这只是我的算法错误。在调试之后,我注意到在循环步骤之后所有变量都成功为空。

2 个答案:

答案 0 :(得分:4)

..............使用 0 而不是 Null

答案 1 :(得分:2)

一些事情:

  1. 您不应该在For循环中标注变量。将它们移出第一个下面的循环。
  2. 如果SumASumBSumC始终是整数,则应将其标注为LongInteger,而不是变体。
  3. 您在循环开始时将每个变量重置为0,因此不需要SumA = NullSumB = NullSumC = Null行。
相关问题