Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于单元格值的Excel VBA停止msgbox显示循环_Excel_Vba_Msgbox - Fatal编程技术网

基于单元格值的Excel VBA停止msgbox显示循环

基于单元格值的Excel VBA停止msgbox显示循环,excel,vba,msgbox,Excel,Vba,Msgbox,我有一个Excel表格,其中有很多不同的if语句和其他在VBA中运行的函数。我一直在兜圈子,试图解决以下问题: 使用If语句,我想告诉用户,他们在回答问题时输入的值是他们希望调整大小的解决方案中不可用的元素-这是用于调整大小/定价计算。我无法共享该文件,下面的问题与问题无关(这意味着我无法从下拉列表中选择实际可用的选项——这还不止这些) 示例代码: B25单元中的问题-“您想要蓝色的吗?” 回答:“是”、“否” 代码: 选择“否”不应该阻止其余代码的执行,也不应该阻止用户完成表单的其余部分。现在

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

使用If语句,我想告诉用户,他们在回答问题时输入的值是他们希望调整大小的解决方案中不可用的元素-这是用于调整大小/定价计算。我无法共享该文件,下面的问题与问题无关(这意味着我无法从下拉列表中选择实际可用的选项——这还不止这些)

示例代码:

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

代码:

选择“否”不应该阻止其余代码的执行,也不应该阻止用户完成表单的其余部分。现在,消息框出现,可以单击OK,然后表单中的每个条目都会再次出现,当然,B35的值没有改变。我尝试了所有不同的方法退出例程,甚至放入routine在不同的模块中,但没有欢乐

有人有什么想法吗?我在想一个辅助细胞可能有用,但我无法理解它。
感谢您没有看到您的实际工作表,并且仅从您提供的简单示例开始,我只能说您需要使用一个变量来限定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
请注意,我定义了一个布尔变量来表示该单元格。我在模块级别定义了该变量,因此只要工作簿处于打开状态,该变量就保持在范围内

在您的情况下,您需要确定变量的作用域级别…何时“重置”它,等等


如果要验证的单元格很多,可能需要一个过程来创建布尔集合…

这里确实没有足够的答案,If语句可以工作,但我猜您的逻辑结构不正确。您需要用一个布尔来限定If语句,该布尔表示您是否已检查此单元格和r承认错误
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