继续用于不起作用

N. *_*von 2 excel vba excel-vba

我正在尝试在Excel中使用Continue For语句,它会抛出编译错误:"预期表达式".这是代码:

For i = 3 To num
If Cells(i, 19) = "" Then
continue for
End If
Next i
Run Code Online (Sandbox Code Playgroud)

为什么会这样?PS:这是实际代码的简化版本.

小智 6

最简单的方法是在不满足条件时进行处理.

For i = 3 To num
    If Cells(i, 19) <> "" Then
        'execute the rest of the processing
    End If
Next i
Run Code Online (Sandbox Code Playgroud)

避免i在For Next循环中递增.A GoTo气馁,很大程度上没有必要(如上所述).

如果值是类型值而不是从公式返回,则替换xlCellTypeConstantsRange.SpecialCells方法中的For Each .

  • `Cells(...) &lt;&gt; ""` 是一种包罗万象的方法,它匹配真正的空白单元格以及包含公式零长度字符串结果的单元格。`Not IsEmpty(Cells(...))` 仅捕获真正的空白单元格。我还使用 `If CBool​​(Len(Cells(...))) then` 。 (2认同)
  • `CBool​​`是从数字到布尔值的最终转换.虽然可以说False为零,任何非False都是True,但实际上,如果没有CBool​​,VBA并不总是将非零数字视为True.最好是明确的,它是一个低影响的视觉提醒,你正在评估一个布尔值. (2认同)