在VBA中没有任何原因跳过循环

时间:2017-05-03 06:50:41

标签: excel vba excel-vba

问题:For currentRow = 25 To rowCount之后,for语句的其余部分不断被跳过。

在这个有问题的代码块之前我还有另外两个For语句,它们的格式与此相同,并且都可以正常工作。

Public Sub WeightB()
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
    Dim currentRowValue As String

    sourceCol = 7
    rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row

    For currentRow = 24 To rowCount
        currentRowValue = Cells(currentRow, sourceCol).Value
        If IsEmpty(currentRowValue) Or currentRowValue = "" Then
            Cells(currentRow, sourceCol).Select
            Exit For
        End If
    Next
End Sub

我已经提到了For loops being skipped without cause in VBA,但仍未能解决这个问题。

1 个答案:

答案 0 :(得分:2)

根据您的澄清评论,rowCount为22,那么您的For循环就会变为

For currentRow = 24 To 22

这显然是一个无操作,因为24无法计算到22个。如果你需要计算最终数字的方向那么你可以使用像

For currentRow = 24 To rowCount Step Iif(rowCount - 24 < 0, -1, +1)

但这真的是你想要做的吗?此外,开始对行号和列号使用Long类型,现在工作表的行数超过32767,并在所有模块的顶部使用Option Explicit来避免恼人的自发变量创建。