excel - VBA 嵌套 Do While 循环串联运行
问题描述
我有一个非常简单的问题。我试图在 Excel VBA 中嵌套两个“Do While”循环。下面的测试代码重现了我遇到的问题。
下面的代码应该产生 12 个消息框。9 用于嵌套循环,因为它被触发了 3 次,主循环也被触发了 3 次,另外还有 3 个消息框用于主循环。
我发现这两个循环是串联运行的,就好像它们没有嵌套一样,所以我总共得到 6 个消息框。
我确定我过去在 VBA 中使用过嵌套循环没有问题(尽管现在我可能需要回去检查)。
为什么嵌套循环以一系列方式表现?它在您的计算机上表现如何?我错过了一个简单的语法错误吗?
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
解决方案
您将需要m
在循环内重置变量,i
否则它只会m
第一次运行循环,因为在您的代码中,一旦m
到达3
,它将始终是3
.
Sub test()
i = 0
Do While i < 3
m = 0
Do While m < 3
MsgBox "Nested Loop " & m
m = m + 1
Loop
MsgBox "Master Loop " & i
i = i + 1
Loop
End Sub
MsgBox
此外,除非您期望它返回一个值,否则不要使用括号。
推荐阅读
- firebase - Flutter 中的 Firebase 子集合文档
- r - 使用 roxygen2 忽略脚本
- docker - Drone CI,未终止的引号字符串
- zend-framework2 - 层状图像调整大小
- minecraft - MC 基岩版:第 1 行,第 2 列 '}' 缺失或对象成员名称
- javascript - ProgressBar.js 将元素连接在一起
- c# - 如何在.net core 2.1的自定义验证属性中获取参数值
- excel - 使用 Matlab 重新格式化传感器数据
- c - Raspberry PI 上 c 语言程序的链接器问题
- firebase - 如何使用颤振和飞镖从 Cloud Firestore 检索特定数据?