2013-03-20 147 views
2

對於我的工作表中的每一行,我試圖瀏覽單元格。當我遇到空單元格時我會停下來。然後,我想要轉到下一行。「Do until」循環在「for each」循環結束之前退出宏

爲了做到這一點,我使用了一個帶有「IsEmpty」條件的「Do until」循環。這個「Do until」循環在「For each」循環中。 「For each」循環用於在第一列中從一個範圍轉到另一個範圍。從A1到A2,到A3等。

我設法成功瀏覽第一行。但我無法設法回到第二排,以及下面的一排。我假設「Do until」循環退出宏而不讓Excel讀取「Next rng」語句...

我的宏退出,並且活動單元格是第一行的第一個空單元格。 (我們現在應該去第二排,不會停止)

這裏是我的代碼:

Sub label_clusters() 

Dim rng As Range, iCounter As Integer 
iCounter = 1 

For Each rng In Feuil1.Range("A1:A24") 

If ActiveCell.Column = 1 Then 
Sheets("Feuil2").Cells(iCounter, 1) = rng.Value 
Sheets("Feuil2").Cells(iCounter, 2) = rng.Offset(0, 1).Value 
iCounter = iCounter + 1 
ActiveCell.Offset(0, 2).Select 
End If 

Do Until IsEmpty(ActiveCell.Value) = True 

If ActiveCell.Column <> 1 Then 
Sheets("Feuil2").Cells(iCounter, 1) = rng.Value 
Sheets("Feuil2").Cells(iCounter, 2) = ActiveCell.Value 
iCounter = iCounter + 1 
ActiveCell.Offset(0, 1).Select 
End If 

Loop 

Next rng 

End Sub 

我明明做錯事,卻一次againd谷歌搜索後,我現在的想法短。任何的消化會做=)非常感謝你的幫助。

回答

1

問題是這一行:

If ActiveCell.Column = 1 Then 

後完成的第一行,ActiveCell是第一個空單元格,ActiveCell.Column是> 1,所以對於for each每次循環迭代後的第一,第一個代碼塊會被跳過,並且ActiveCell永遠不會更新到下一行的第一個單元格。

看着你的代碼,兩個if陳述似乎是多餘的。如果您刪除ifend if兩行,我認爲代碼將正確執行。

+0

非常感謝Andrew,您的回答讓我花了不到一分鐘的時間來解決這個問題。 我現在清楚地看到我的錯誤。放棄如果沒有做到這一點。但是,理解了這個問題。我在頂部添加了「rng.Select」。因此,在完成一行之後,我首先提出了激活的單元格。 – 2013-03-20 05:11:50