J'ai un Yes/No MsgBox
dans mon script VBA qui renvoie une question à laquelle l'utilisateur doit répondre. Chaque fois que vous appuyez sur les boutons "Oui" ou "Non", outre le script exécutant son code respectif, une autre variable MsgBox
portant les chiffres "6" ou "7" apparaît. Comment désactiver cette seconde MsgBox
?
Voici mon code:
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
La fonction MsgBox
renvoie une valeur vbMsgBoxResult
, qui est une énumération (et doit être un entier Long
et non pas Integer
).
Vous l'appelez deux fois:
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
Une fois pour assigner question
, et une autre fois pour afficher question
- qui à ce stade va contenir soit vbYes
(6), soit vbNo
(7).
Je déclarerais question As vbMsgBoxResult
pour éviter les ambiguïtés et obtenir la saisie semi-automatique/IntelliSense plus tard. En fait, result
ou answer
serait un meilleur identifiant - "question" sonne comme la question elle-même, pas la réponse de l'utilisateur.
juste utiliser
question = "Unfortunately, the Database has no sources regarding " & Category & " in " & country & ". Would you like to broaden your search and see all sources regarding " & country & "?."
serait suffisant.
De plus, la fonction if peut être
If Msgbox(Question) = vbYes then
...
End If
Ne pas appeler MsgBox deux fois
Supprimer MsgBox question
. Cela crée inutilement une deuxième boîte de message contenant la valeur de question (6 ou 7, selon que vous ayez choisi oui ou non, comme par exemple vbYes a la valeur de retour 6).