繁体   English   中英

如何修复Excel VBA中发送的``下一个没有For''错误

[英]How to fix a 'Next with no For' error sent in excel vba

我正在设置一个自动日历,当varDate()中的相应日期出现在日历中(Fday是日历日期)时,该日历应从varName()中绘制一个名称。 我收到令人困惑的循环中的“下一个没有For”错误。

目的是为name(varName)和date(varName)创建一个动态数组,在其中可以将名称绘制为具有相应日期的日历日。 我已经成功使用静态数组根据相应的日期将名称绘制到日历中,但是当我使用动态数组时,这给我带来了麻烦。

stRow = Row with calendar date
stCol = Column with calendar date
nameRow = Row containing persons name (below calendar date)

    For i = LBound(varDate) To UBound(varDate)
      If Cells(stRow + 1, stCol) = Empty Then
       nameRow = stRow + 1
       If Fday = varDate(i) Then
        csheet.Cells(nameRow, stCol) = varName(i)
       End If
   Else
     nameRow = nameRow + 1  
     If Fday = varDate(i + 1) Then
       csheet.Cells(nameRow, stCol) = varName(i + 1)
     End If
    Next i

您应该缩进代码...这样可以避免出现此错误:

stRow = Row with calendar date
stCol = Column with calendar date
nameRow = Row containing persons name (below calendar date)

For i = LBound(varDate) To UBound(varDate)
    If Cells(stRow + 1, stCol) = Empty Then
        nameRow = stRow + 1
        If Fday = varDate(i) Then
            csheet.Cells(nameRow, stCol) = varName(i)
        End If
    Else
        nameRow = nameRow + 1
        If Fday = varDate(i + 1) Then
            csheet.Cells(nameRow, stCol) = varName(i + 1)
        End If 'you missed this one
    End If
Next i

每当我遇到此错误时,这意味着我实际上在某处缺少“ End If”。 Excel认为Next语句在IF块内,因为它没有找到End If,但是在该IF块中没有For!

因此,这就是您得到错误的原因。

达米安(Damian)已找到丢失的“如果结束(End If)”应该放到哪里,然后将其放回去。他是对的,正确的缩进使得这些错误非常容易发现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM