Do Until Loop的正确语法是什么?这是我第一次尝试尝试,我收到一条错误消息,上面写着“Loop without Do”。这就是我所拥有的:
Dim i As Long
Do
For i = 3 To 93
Sheets("Analysis").Select
Range("B" & i).Copy
Range("R3").PasteSpecial
Sheets("Analysis").Select
Range("Q3").Copy
Range("G" & i).PasteSpecial Paste:=xlPasteValues
Loop Until Sheets("Analysis").Range("L1") < 50
答案 0 :(得分:1)
虽然我无法弄清楚你想要用循环完成什么,但是为了使它“正确”,代码应该改为以下内容。
Dim i As Long
Do
For i = 3 To 93
Sheets("Analysis").Select
Range("B" & i).Copy
Range("R3").PasteSpecial
Sheets("Analysis").Select
Range("Q3").Copy
Range("G" & i).PasteSpecial Paste:=xlPasteValues
Next i
Loop Until Sheets("Analysis").Range("L1") < 50
答案 1 :(得分:1)
您的代码可以使用一些真正的清理工作。
Dim i As Long
With Sheets("Analysis")
Do Until .Range("L1").Value < 50
For i = 3 To 93
.Range("B" & i).Copy .Range("R3")
.Range("Q3").Copy
.Range("G" & i).PasteSpecial Paste:=xlPasteValues
Next i
Loop
End With
有几件事。首先,确保某处有一种机制可以将.Range("L1")
中的值降低到小于50
。否则,这将在无限循环中运行(因为您无法完成条件以使其停止)。
其次,确保For
循环已使用Next
关闭。 Next
或Next x
其中x
是您定义的迭代器变量应该有效(在您的情况下,x
是i
)。
第三,阅读Do While-Loop
,Do Until-Loop
,Do-Loop While
和Do-Loop Until
的差异。 Until
和While
非常明显。对于那些以循环开始的人来说,条件的放置有点困难,应该毫无疑问地掌握。可以找到一个非常明确的解释here。
第四,使用With
对单个对象执行顺序或同时操作。请查看this answer以获取样本和说明(请参阅(3)部分。)
希望这有帮助。