代码之家  ›  专栏  ›  技术社区  ›  Matt Taylor

问2个问题,有3个不同的结果

  •  1
  • Matt Taylor  · 技术社区  · 6 年前

    我试图用一个MSGBox问用户两个独立的问题。根据他们选择的是,打印适当的一组图纸。

    这就是我目前的处境。单个选项“是”和“否”将起作用,但“是”和“是”不起作用。

    Dim acadMsgBox As String, exclMsgBox As String
    Dim LoginName As String, destFolder As String
    
    acadMsgBox = MsgBox("Print all AutoCad Drawings to PDF?", vbYesNo, "Drawings (" & Worksheets("Drawing Index").Range("D2") & " Package)")
    exclMsgBox = MsgBox("Print all Excel Spreadsheets to PDF?", vbYesNo, "Spreadsheets (" & Worksheets("Drawing Index").Range("D2") & " Package)")
    
    LoginName = UCase(GetUserID)
    destFolder = "C:\Users\" & LoginName & "\Desktop\"
    
    If acadMsgBox & exclMsgBox = vbYes Then
        Call AcadPlot
        On Error Resume Next
        Call ExcelPlot
        Shell "Explorer.exe" & " " & destFolder, vbNormalFocus
    ElseIf acadMsgBox = vbYes Then
        Call AcadPlot
        Shell "Explorer.exe" & " " & destFolder, vbNormalFocus
    ElseIf exclMsgBox = vbYes Then
        Call ExcelPlot
        Shell "Explorer.exe" & " " & destFolder, vbNormalFocus
    End If
    

    谢谢你的反馈

    1 回复  |  直到 6 年前
        1
  •  4
  •   Mathieu Guindon    6 年前

    这个 MsgBox 函数返回 VbMsgBoxResult 枚举值,它本质上是一个命名的 Long 常数。

    Dim acadMsgBox As String, exclMsgBox As String
    

    宣布他们 As VbMsgBoxResult 不是 As String .

    If acadMsgBox & exclMsgBox = vbYes Then
    

    声明它们 As Long 也可以,但是 VBMSGBOX结果 之后您将获得免费的自动完成功能。 = 符号。

    & 字符串连接运算符 , Comintern briefed you on it . 你想用一个 符合逻辑的 操作员:

    If acadMsgBox = vbYes And exclMsgBox = vbYes Then
    

    请注意,这将涉及一个不会产生预期结果的位操作:

    If acadMsgBox And exclMsgBox = vbYes Then