excel - "Do until"循环在 "for each"循环结束之前退出宏

标签 excel vba

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

为了做到这一点,我使用了一个带有“IsEmpty”条件的“Do until”循环。这个“Do until”循环位于“For each”循环中。 “For each”循环用于在第一列中从一个范围转到另一个范围。从 A1 到 A2,再到 A3 等。

我设法成功浏览了第一行。但我无法到达第二排,以及以下几排。我假设“直到”循环退出宏而不让 Excel 读取“下一个 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

我显然做错了什么,但是在一次又一次的谷歌搜索之后,我现在缺乏想法。任何 suugestion 都可以 =) 非常感谢您的帮助。

最佳答案

问题在于这一行:

If ActiveCell.Column = 1 Then

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

查看您的代码,if陈述似乎是多余的。我认为如果您同时删除 if,代码将正确执行。和 end if线。

关于excel - "Do until"循环在 "for each"循环结束之前退出宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15515400/

相关文章:

excel - 带有可切换范围的索引和匹配

excel - VBA 如何打开另一个工作簿?

excel - 如何将 "fraction"字符转换为十进制?

javascript - 从 JavaScript 表单访问搜索结果的 VBA 网络抓取工具

excel - 如何检测包含公式的单元格是否为空白?

excel - 我们可以像在 kdb 中那样在 excel 中加入 asof 吗

vba - 保存并打开Visual Basic编辑器时Excel工作簿崩溃

vba - 从 Excel VBA 运行 Access 查询

excel - Application.WorksheetFunction 与 WorksheetFunction

excel - 如何从 VBA 函数返回自定义类型