MsgBox是/否Excel VBA

我的VBA脚本中有一个Yes/No MsgBox ,它返回一个供用户回答的问题。 每当按下“是”或“否”button时,除了运行相应代码的脚本之外, MsgBoxpopup另一个带有数字“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以避免歧义,并获得自动完成/智能感知当您以后使用它。 实际上, resultanswer将是一个更好的标识符 – “问题”听起来像问题本身 ,而不是用户的回答。

只是使用

 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)。