繁体   English   中英

Excel VBA 根据单元格值停止 msgbox 显示循环

[英]Excel VBA stop msgbox display loop based on cell value

我有一张 Excel 表,其中有很多不同的 if 语句和其他在 VBA 中运行的函数。 我一直在兜圈子试图解决以下问题:

使用 If 语句我想告诉用户他们为回答问题而输入的值是他们正在寻找大小的解决方案的不可用元素 - 这是用于大小/定价计算。 我无法共享该文件,并且下面的问题与该问题无关(这意味着我无法从下拉列表中选择实际可用的选项 - 不仅如此)。

示例代码:

单元格 B25 中的问题 - “你想要蓝色的吗?” 回答:“是”、“否”

代码:

If Range("B35").Value = "Yes" Then
VBA.Interaction.MsgBox "Please contact Product Manager", , "Not available"
End If

选择“否”不应阻止代码的 rest 执行,也不应阻止用户完成表格的 rest。 现在,出现消息框并且可以单击“确定”,然后表单中的每个条目都会再次出现,因为 B35 的值当然没有改变。 我尝试了所有不同的方法来退出例程,甚至将例程放在不同的模块中,但没有任何乐趣。

有没有人有任何想法? 我在想一个辅助细胞可能有用,但我无法理解它。 谢谢

在没有看到您的实际工作表的情况下,仅从您提供的简单示例开始,我只能说您需要使用一个表示您是否已经引发此错误的变量来限定您的 IF 语句。 例如:

Option Explicit

Public bChecked35 As Boolean


Sub abc()
    If Range("B35").Value = "Yes" And Not bChecked35 Then
        MsgBox "Please contact Product Manager", , "Not available"
        bChecked35 = True
    End If
End Sub

请注意,我定义了一个 boolean 变量来表示该单元格。 我在模块级别定义了变量,所以只要打开工作簿,变量就会保留在 scope 中。

在您的情况下,您需要确定变量应该具有的 scope 级别......何时“重置”它等等。

如果您有很多单元格要验证,也许您想要一个创建布尔集合的过程......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM