如何修复在 excel vba 中发送的'Next with no For'错误



我正在设置一个自动日历,当vardate((中的相应日期出现在日历中时,该日历应从varname((绘制名称(fday是日历日期(。我会感到困惑地收到循环中的"下一个无"错误。

目的是具有名称(varname(和日期(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'。excel认为下一个语句在if块内部,因为如果没有找到结束,但是如果块!

没有任何结局

这就是您遇到错误的原因。

达米安(Damian(发现了失踪端(如果应该去的地方(,然后将其放回原处。正确的凹痕使这些错误非常容易发现。

最新更新