提出2个问题,并得出3个不同的结果

时间:2019-01-28 22:04:13

标签: excel vba

我正在尝试向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 个答案:

答案 0 :(得分:4)

MsgBox函数返回一个VbMsgBoxResult枚举值,该值本质上是一个名为Long的常量。

Dim acadMsgBox As String, exclMsgBox As String

声明它们As VbMsgBoxResult,而不是As String

If acadMsgBox & exclMsgBox = vbYes Then

将它们声明为As Long也可以,但是使用VbMsgBoxResult,您可以在=符号之后获得免费的自动补全功能。

&字符串连接运算符Comintern briefed you on it。您要在此处使用逻辑运算符:

If acadMsgBox = vbYes And exclMsgBox = vbYes Then

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

If acadMsgBox And exclMsgBox = vbYes Then