Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel &引用;直到;循环在“循环”之前退出宏;对于每一个“;环端_Excel_Vba - Fatal编程技术网

Excel &引用;直到;循环在“循环”之前退出宏;对于每一个“;环端

Excel &引用;直到;循环在“循环”之前退出宏;对于每一个“;环端,excel,vba,Excel,Vba,对于工作表中的每一行,我都会尝试浏览单元格。当我遇到空牢房时,我会停下来。然后我想转到下一行 为了做到这一点,我使用了一个带有“IsEmpty”条件的“do-until”循环。这个“Do-until”循环位于“For-each”循环中。“For each”循环用于在第一列中从一个范围转到另一个范围。从A1到A2,再到A3等 我成功地浏览了第一行。但我没法进入第二排,还有下面的几排。我假设“Do until”循环退出宏,而不让Excel读取“Next rng”语句 我的宏退出,活动单元格是第一行的

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

为了做到这一点,我使用了一个带有“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
Sub-label_clusters()
Dim rng作为范围,I计数器作为整数
i计数器=1
对于Feuil1.范围内的每个rng(“A1:A24”)
如果ActiveCell.Column=1,则
表(“Feuil2”).单元格(iCounter,1)=参考值
图纸(“Feuil2”).单元格(iCounter,2)=基准偏移量(0,1).值
i计数器=i计数器+1
ActiveCell.Offset(0,2)。选择
如果结束
直到IsEmpty(ActiveCell.Value)=True
如果是ActiveCell.Column 1,则
表(“Feuil2”).单元格(iCounter,1)=参考值
表(“Feuil2”).单元格(iCounter,2)=ActiveCell.Value
i计数器=i计数器+1
ActiveCell.Offset(0,1)。选择
如果结束
环
下一个rng
端接头

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

问题在于这一行:

If ActiveCell.Column = 1 Then
完成第一行后,
ActiveCell
是第一个空单元格,
ActiveCell.Column
是>1。因此,对于第一个循环之后的每个循环的
每次迭代,第一个代码块将被跳过,
ActiveCell
永远不会更新到下一行的第一个单元格


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

非常感谢Andrew,您的回答让我花了不到一分钟的时间就解决了这个问题。我现在清楚地看到我的错误了。如果我没有做的话,就放弃。但是,在理解了问题之后。我在顶部添加了“rng.Select”。所以,在我完成一行之后,我开始向上提升我的活动单元格。