2017-10-10 1366 views
-1

如果找到空白單元格,我無法找到運行循環的解決方案。這是我第一次使用VBA(但希望不是最後一次),所以提前感謝您的幫助和建議。Excel 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 
+0

請將您的代碼縮進4個空格,以便它正確顯示 – jsotola

+0

do-while循環如何? 'Range(「Units」)。Cells(i,1).Value <>「」'不要忘記在循環內添加一行'i = i + 1'。 – newacc2240

+0

如果你希望marco只跳過空白的循環,但繼續下一步,你可以添加一個if語句,如果範圍(「單位」)。單元格(i,1)。值<>「」,然後{do在你目前的for循環裏有一些東西。 – newacc2240

回答

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)是空的,馬可進行到下一個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來控制循環。

+0

謝謝,循環完美!我做了「儘管」選項,因爲我希望一旦發現空白單元格就停止。 –