VBA 使用“或”条件执行直到循环

Posted

技术标签:

【中文标题】VBA 使用“或”条件执行直到循环【英文标题】:VBA Do Until Loop with Or "" condition 【发布时间】:2014-08-29 06:23:06 【问题描述】:
 Do Until Sheets("Sheet1").Cells(x, y).Value = stringOne Or ""

        x = x + 1

 Loop

在上面的 VBA 代码片段中,我得到一个运行时错误“13”:类型不匹配。 stringOne 被声明为字符串。我可以消除 Or "" 并且循环有效。我可以消除 stringOne 并且只有 "" 并且循环有效。只有当我添加 Or "" 时,循环才会停止运行。我什至交换了顺序,即 = "" 或 stringOne。有什么想法吗?

【问题讨论】:

如果您包含所用语言的标签,通常有助于获得答案。我怀疑是 VBA 还是 VB.Net,但如果您愿意 edit 包含正确的语言标签,将会有很大帮助。 为什么要否决 OPs Q?这是一个有效的问题,至少有两个人确实理解它并发布了一个值得 +1 的解决方案? 谢谢肯。对不起,我是论坛的新手,我以为我把所有东西都放在一起了。我编辑添加了 VBA。我已经在这一行代码上工作了超过一整天,并决定我需要外部帮助。我不知道为什么值得投反对票……我对冒犯表示歉意。请让我知道导致否决票的原因,以便我可以从错误中吸取教训。谢谢! 【参考方案1】:

任何条件都需要表达式和运算符。

 Do until exp1 op exp2 OR exp3

可能仅在 exp3 是布尔类型时才有效。 ""(字符串)不是。

所以应该是这样的

 Do Until Sheets("Sheet1").Cells(x, y).Value = stringOne Or Sheets("Sheet1").Cells(x, y).Value = ""

【讨论】:

完美运行阿克塞尔!感谢您的解释。你今天教会了我一些新东西!【参考方案2】:

你需要在OR之后进行布尔运算,所以你基本上需要:

Do Until Sheets("Sheet1").Cells(x, y).Value = stringOne Or Sheets("Sheet1").Cells(x, y).Value = ""

        x = x + 1

 Loop

或 "" 不是布尔运算,因此您有 Do Until (boolean operation) OR (string constant) 而不是 Do Until (boolean operation) OR (boolean operation)

【讨论】:

谢谢艾伦!我没有接受过正式的 VBA 培训,只是在必要时才学习,所以我不熟悉语言的规则,但这确实有助于我了解 Or 将需要布尔运算而不是字符串。我会赞成你和 Axel 的回应,但我还没有任何代表。你们应该得到支持!

以上是关于VBA 使用“或”条件执行直到循环的主要内容,如果未能解决你的问题,请参考以下文章

VBA 中 do while loop 用法

Excel VBA:从最大值循环并检查条件

循环

循环与选择

当型循环结构和直到型循环结构的定义是啥?

vb中的循环语句