MsgBox是/否Excel VBA
我的VBA脚本中有一个Yes/No MsgBox
,它返回一个供用户回答的问题。 每当按下“是”或“否”button时,除了运行相应代码的脚本之外, MsgBox
popup另一个带有数字“6”或“7”的MsgBox
。 如何禁用第二个MsgBox
?
这是我的代码:
Dim question As Integer question = MsgBox("Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?", vbYesNo + vbQuestion, "Empty Sheet") MsgBox question If question = vbYes Then Sheets("Results").Range("D6").ClearContents Sheets("Results").Range("D7").ClearContents Category = Sheets("Results").Range("D6").Value Else Sheets("Results").Range("D5").ClearContents Sheets("Results").Range("D6").ClearContents Sheets("Results").Range("D7").ClearContents Exit Sub End If
MsgBox
函数返回一个vbMsgBoxResult
值,这是一个枚举(应该是一个Long
整数,而不是一个Integer
)。
你调用了两次
Dim question As Integer question = MsgBox("Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?", vbYesNo + vbQuestion, "Empty Sheet") MsgBox question
一旦分配question
,并且一次显示question
– 在那一刻将包含vbYes
(6)或vbNo
(7)。
我会声明question As vbMsgBoxResult
以避免歧义,并获得自动完成/智能感知当您以后使用它。 实际上, result
或answer
将是一个更好的标识符 – “问题”听起来像问题本身 ,而不是用户的回答。
只是使用
question = "Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?."
就足够了。
另外if函数可以
If Msgbox(Question) = vbYes then ... End If
不要调用MsgBox两次
删除MsgBox question
。 这是不必要的创build第二个消息框填充问题的价值(6或7取决于您select是或否,如vbYes具有返回值6)。