Do Until循环的语法

时间:2014-02-27 14:11:23

标签: excel-vba vba excel

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

2 个答案:

答案 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关闭。 NextNext x其中x是您定义的迭代器变量应该有效(在您的情况下,xi)。

第三,阅读Do While-LoopDo Until-LoopDo-Loop WhileDo-Loop Until的差异。 UntilWhile非常明显。对于那些以循环开始的人来说,条件的放置有点困难,应该毫无疑问地掌握。可以找到一个非常明确的解释here

第四,使用With对单个对象执行顺序或同时操作。请查看this answer以获取样本和说明(请参阅(3)部分。)

希望这有帮助。