直到循环执行,否则,则VBA Excel

时间:2018-08-06 23:39:02

标签: excel vba excel-vba

更新: 尽管有些人可能不同意我的方法(尽管我对此是100%的新知识,但我可能会得到反馈),但我得到的代码可以完全按照我想要的方式做(粘贴在下面)。

我正在尝试创建一个简单的VBA代码,以使用if then语句运行循环-如果该语句为true,则停止循环。如果该语句直到结束永远不会为真,则当单元格为IsEmpty()时停止循环。

这是我到目前为止所拥有的。显然这是不正确的,并且没有运行,但是我希望这种尝试可以帮助您掌握我要做什么的想法。

Sub runoutDateLoop()
r = 8
Do Until IsEmpty(Cells(r, 1))
c = 24
Do Until Cells(r, c - 1).Value < 1 = True
 If Cells(r, c).Value < 1 Then
 Cells(r, 18).Value = Cells(7, c)
 Else
 Cells(r, 18).Value = Cells(7, c)
 End If
 c = c + 1
Loop
r = r + 1
Loop
End Sub

我正在尝试创建一个循环,直到if语句为true。 if then语句很简单-如果数字为负数,则我们希望单元格r,18复制到单元格7,c。如果不是,那么循环将一直进行到有一个负数,或者从不存在一个负数,直到该单元格为空。我希望这也使每行都有一个双重的“直到”循环。

任何人都有任何想法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

要提前退出Do循环,请使用Exit Do。由于您有两个嵌套循环,因此需要一个标志来退出外部循环。

Sub RunoutDateLoop()
    Dim r As Long, c As Long
    Dim Found As Boolean
    r = 8
    Do Until IsEmpty(Cells(r, 1))
        c = 24
        Do Until IsEmpty(Cells(r, c))
            If Cells(r, c).Value < 1 Then
                Cells(r, 18).Value = Cells(7, c)
                Found = True
                Exit Do 'Exit the inner do
            End If
            c = c + 1
        Loop
        If Found Then Exit Do 'exit the outer do
        r = r + 1
    Loop
End Sub

注意:我对循环中的逻辑不做任何评论,还不清楚您的数据是什么,以及您需要的确切逻辑(例如,如果数字为负数 vs {{ 1}})

答案 1 :(得分:1)

在所有人的帮助下,这就是我所拥有的,并且完全可以按照我的意愿进行工作。这可能有点令人困惑,因为我的数据非常复杂且难以理解,而实际看不到电子表格。

> myapp.py someArg1 someArg2