【问题标题】:Message box Yes/No response are the same消息框 Yes/No 响应相同
【发布时间】:2019-08-23 09:43:19
【问题描述】:

我正在制作一个电子表格,用于记录发动机测试中传动轴的使用情况。他们在用户表单上记录安装或移除了哪个传动轴,并且电子表格会自动更新所有内容。作为其中的一部分,我希望它在他们尝试安装以前可能已报废但也允许他们继续使用的传动轴时自动标记(可能有一些原因导致它超出正常使用范围)。为此,如果传动轴被记录为报废,我已将其设置为打开一个带有是/否选项的消息框,但无论选择什么按钮都会发生相同的结果。

ElseIf Installbutton = True And Locationtext = "Scrapped" Then

MsgBox "This Propshaft is showing as Scrapped" & vbNewLine & "Do you wish to continue with the install?", vbYesNo + vbDefaultButton2 + vbQuestion

    If vbYes Then
    GoTo 10
    Else
    Exit Sub
    End If

Else

所以无论按下什么按钮,它都会继续,就像你按下是并运行其余的子一样。我已经更改了代码,以便 vbNo 是第一个,但是无论您按下什么按钮,它都会退出子。我也尝试使用 vbYes 或 vbNo 的数字,但这没有任何区别。

我也尝试过 answer = messagebox("blah, blah, blah") 和 if answer = vbYes 等等,但没有任何改变。

我确定我遗漏了一些明显的东西,有什么建议吗?

【问题讨论】:

  • GoTo 10 - 真的吗?自从在 Compucolor II 上使用 Basic 编程后,我就没有使用过那行代码。
  • 当我浏览代码行时,一个数字本身会非常清楚地显示出来。
  • 如果你在审查你的代码时需要寻找一个数字,那么你的代码结构是根本错误的。这是经典的意大利面条编码。

标签: excel vba


【解决方案1】:

您需要将用户的“答案”保存到一个变量并测试该变量:

uinput = MsgBox("Answer yes or no", vbYesNo)

If uninput = vbYes Then
    'Do something
ElseIf uninput = vbNo Then
    'Do something else
End if

请注意,我在 MsgBox 函数的参数周围添加了括号,因为在使用函数填充变量时这是必需的。

【讨论】:

    【解决方案2】:

    没什么大问题,你只是误解了如何处理MsgBox命令的结果。

    MsgBox 命令返回指示用户单击了哪个按钮的结果。试试这段代码,你会发现它有效:

    If MsgBox("This Propshaft is showing as Scrapped" & vbNewLine & "Do you wish to continue with the install?", vbYesNo + vbDefaultButton2 + vbQuestion) = vbYes Then
        Goto 10
    Else
        Exit Sub
    End If
    

    如果您有多个结果,您也可以在变量中捕获结果并对其进行处理,因为上述解决方案仅适用于您仅测试 vbYes 的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2023-03-27
      • 2019-10-14
      • 1970-01-01
      相关资源
      最近更新 更多