簡體   English   中英

MsgBox是/否Excel VBA

[英]MsgBox Yes/No Excel VBA

我的VBA腳本中有一個Yes/No MsgBox ,它返回一個問題供用戶回答。 每當按下“是”或“否”按鈕時,除了運行其各自代碼的腳本之外,彈出另一個數字為“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 - 在那一點vbNo包含vbYes (6)或vbNo (7)。

在此輸入圖像描述

我會將question As vbMsgBoxResult聲明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 這會不必要地創建第二個填充了問題值的消息框(6或7,具體取決於您是選擇是或否,例如vbYes的返回值為6)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM