“直到”循环在“for each”循环结束之前退出宏

时间:2013-03-20 04:33:36

标签: excel excel-vba vba

对于我的工作表的每一行,我都试图浏览单元格。当我遇到一个空单元格时,我会停下来。然后我想转到下一行。

为了做到这一点,我使用" Do直到"循环使用" IsEmpty"条件。这"直到"循环在一个"对于每个"环。 "对于每个" loop用于在第一列中从一个范围转到另一个范围。从A1到A2,再到A3等。

我设法成功浏览第一行。但我无法设法进入第二排,以及以下几排。我假设" Do直到"循环退出宏而不让Excel读取"下一步"声明...

我的宏退出,活动单元格是第一行的第一个空单元格。 (我们现在应该进入第二行,而不是停止)

这是我的代码:

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

我显然做错了什么,但经过谷歌搜索,我现在缺乏想法。任何消化都会做=)非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

If ActiveCell.Column = 1 Then

完成第一行后,ActiveCell是第一个空单元格,而ActiveCell.Column是&gt; 1.因此,对于第一个之后for each循环的每次迭代,第一个代码块被跳过,ActiveCell永远不会更新到下一行的第一个单元格。

查看您的代码,两个if语句似乎都是多余的。如果您同时删除ifend if行,我认为代码将正常运行。