首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环串联运行时VBA嵌套Do

问循环串联运行时VBA嵌套Do
EN

Stack Overflow用户
提问于 2021-02-15 11:36:29
回答 1查看 379关注 0票数 2

我有个很简单的问题。我试图在Excel中嵌套两个"Do While“循环。下面的测试代码复制了我所遇到的问题。

下面的代码应该生成12个消息框。9对于嵌套循环,因为它被触发了三次,主循环也被触发了三次,主循环还有三个消息框。

我发现这两个循环是串联的,好像它们不是嵌套的,所以我总共得到了6个消息框。

我确信我以前在VBA中使用过嵌套循环,没有问题(尽管现在我可能需要回去检查)。

为什么嵌套循环在一个系列中运行呢?它在你的电脑上表现如何?我是不是遗漏了一个简单的语法错误?

代码语言:javascript
复制
Sub test()
    i = 0
    m = 0
    Do While i < 3
        Do While m < 3
            MsgBox ("Nested Loop " & m)
            m = m + 1
        Loop
        MsgBox ("Master Loop " & i)
        i = i + 1
    Loop
End Sub
EN

回答 1

Stack Overflow用户

发布于 2021-02-15 14:22:42

在输入循环块之前,已知两个循环的下界和上界。

在这种情况下使用的正确的循环结构是For...Next。

代码语言:javascript
复制
Sub test()
    Dim i As Long
    Dim m As Long
    For i = 0 To 2
        For m = 0 To 2
            Debug.Print "Inner Loop " & m
        Next
        Debug.Print "Outer Loop " & i
    Next
End Sub

使用Do...Loop块(Do...While、Do While...Loop、Do...Until等)当循环开始时迭代次数未知时,或其他情况取决于执行循环体时所满足的条件。

这样,您就不需要操作/增量/重置任何循环计数器变量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66207328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档