Excel VBA:如果找到空白单元格,如何退出循环

时间:2017-10-10 02:10:49

标签: excel vba excel-vba

如果找到空白单元格,我很难找到运行循环的解决方案。这是我第一次使用VBA(但希望不是最后一次),所以请提前感谢您的帮助和建议。

基本上,对于一列值("单位"),我想将每个值复制并粘贴到输入框中,复制结果并粘贴到其他位置,然后重复下一个值直到下一个单元格在"单位"列是空白的。

如何处理这种情况的任何建议将不胜感激。我尝试了各种各样的"同时..."和"如果......"等但不能破坏结构。

Sub ResultsTable()

    Application.ScreenUpdating = False

    Dim UnitRows As Integer
    UnitRows = Range("Units").Rows.Count

    Do While Range("Units").Cells(i, 1).Value <> ""

    i = i + 1

        Range("Units").Cells(i, 1).Copy
        Range("Input").PasteSpecial xlPasteValues

        Range("ABBA").Copy
        Range("ABBAO").Cells(i, 1).PasteSpecial xlPasteValues

        Range("BABBA").Copy
        Range("BABBAO").Cells(i, 1).PasteSpecial xlPasteValues

        Range("CABBA").Copy
        Range("CABBAO").Cells(i, 1).PasteSpecial xlPasteValues

        Range("DABBA").Copy
        Range("DABBAO").Cells(i, 1).PasteSpecial xlPasteValues



    Range("Units").Copy
    Range("UnitsOutput").PasteSpecial xlPasteValues

    Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:0)

您可以使用.Value属性来检查它是否为空:

Range("Units").Cells(i, 1).Value <> ""

当单元格为空时返回False。

我不确定您是否需要代码跳过循环或终止整个循环,如果它遇到空白。 如果您只需要跳过当前循环,请尝试使用if语句在for循环中。

For i = 1 To UnitRows
    If Range("Units").Cells(i, 1).Value <> "" Then
        'your code here
    End If
Next i

当细胞(i,1)空白时,marco会进入下一个i,直到它到达UnitRows。

如果要终止循环,请尝试Do-while循环。

Do While Range("Units").Cells(i, 1).Value <> ""
    'your code here
    i = i + 1
Loop

当Cells(i,1)为空时,条件变为False,因此循环停止。

请记住,同时使用For循环和While循环时要始终注意,尤其是使用相同的变量i来控制循环。