La compréhension de ce que les codes de réponse de revenir de MsgBox
Je suis très nouveau à la programmation et je viens juste de commencer à apprendre le VBA avec excel. Je suis tombé sur ce site et ne les exemples ici, mais j'ai une question à propos de ce code:
Je sais que les variables sont déclarées à l'aide de "Dim" déclaration "Message" ici est la variable ayant un type de données entier. Ce que je ne pas bien comprendre, c'est; quel est le sens de "6" et "7". Je crois qu'ils viennent de quelque part. Mais comme je viens de commencer l'apprentissage de ce programme, je n'ai pas la moindre idée. Pourriez-vous s'il vous plaît dites-moi comment elle fin à "6" et "7". Je crois qu'il existe une certaine base ici
Private Sub CommandButton1_Click()
Dim message As Integer
message = MsgBox("Click Yes to Proceed, No to stop", vbYesNoCancel, "Login")
If message = 6 Then
Range("A1").Value = "You may proceed"
ActiveWorkbook.Activate
ElseIf message = 7 Then
ActiveWorkbook.Close
End If
End Sub
Merci pour votre aide:-)
=======
Merci les gars pour les réponses, elles sont très utiles. Oui ce fil de discussion a été déjà posté dans le super utilisateur du site. J'ai été informé que cette question devrait appartiennent ici, donc je l'ai posté ici après avoir lu qu'ils vont le faire automatiquement à partir de super-utilisateur pour stackoverflow.
merci encore une fois
ok je vais poster cette question de Stackoverflow, même si je connais déjà la réponse n'est pas vraiment sûr si cela aide.
Ne postez pas votre question, il existe un système de migration entre les sites, votre question sera migré là-bas (dès que suffisamment de personnes de voter pour elle, ou un modérateur). Si vous postez là, il sera probablement un doublon, lorsque celui-ci sera déplacé (je sais, c'est pas très clair au début, mais vous vous habituez à elle 😉 )
désolé j'ai déjà poster. J'ai lu les commentaires avec beaucoup de retard. J'espère que je ne vais pas obtenir de toute pénalité:-(
Bien, si vous avez la réponse à votre question, n'hésitez pas à cliquer sur "tique" à côté de la bonne réponse.
OriginalL'auteur tintincutes | 2009-11-18
Vous devez vous connecter pour publier un commentaire.
MsgBox
retourne unEnum(eration)
appeléMsgBoxResult
, qui au fond n'est rien d'autre puis les valeurs numériques avec un "label". 6 et 7 dans ce cas sont les membres de cette énumération, qui sont mappés à des réponsesYes
etNo
.À l'aide de soi-disant "nombres magiques" au lieu de Constantes ou des Énumérations devrait éviter dans la mesure du possible.
Fondamentalement, vous pouvez réécrire le code:
Peut-être que l'Enum est appelé vbMsgBoxResult ou quelque chose... je n'ai pas de Bureau pour vérifier cela, il suffit de Visual Studio.
Alors que nous en sommes... cela pourrait être plus facile à comprendre:
merci. Je pense que l'utilisation des noms plutôt que des numéros est ce que les énumérations sont tout au sujet, et j'adore les énumérations. 😉
merci Bobby pour la très bonne réponse, surtout si cette question appartient à Stackoverflow:-) je ne suis pas sûr si je dois l'ouvrir à Stackoverflow bien ou tout simplement le laisser ici comme ça. +1 🙂
le premier code ne fonctionne pas. j'ai une erreur "Erreur d'Exécution "424" Objet requis"... pas vraiment sûr pourquoi?
aussi le dernier code avec le cas, il ne fonctionne pas. J'ai eu la même erreur que ci-dessus.
OriginalL'auteur Bobby
C'est très mal écrit le code, "6" et "7" sont les valeurs des constantes "vbYes" et "vbNo" où sont renvoyés lorsque l'utilisateur clique sur Oui ou sur Non dans la boîte de dialogue.
Référence: http://www.techonthenet.com/access/constants/msgbox_ret.php
Le code doit dire
au lieu de
De sorte qu'il est clair de ce qui se passe.
OriginalL'auteur Brian Schroth
Lorsque j'ai commencé avec
MsgBox
réponses, j'ai presque toujours déclaré la réponse comme unInteger
. Cependant, j'ai appris que la meilleure chose à faire est de déclarer votremessage
variable commeVbMsgBoxResult
, qui est une énumération qui montre toujours la réponse. Dans l'image ci-dessous, les IDE (par exemple, Visual Basic pour Application de l'éditeur) va vous montrer les différentes options possibles enVbMsgBoxResult
.Vous pourrait stocker vos
answer
variable comme unInteger
étant donné que toutes les variables du Recensement (par exemple,vbAbort
,vbYes
,vbOK
, etc.) en effet, la résoudre en nombres entiers. Cependant, vous devez comprendre ce que l'entier des valeurs pour ces variables sont chaque fois que vous le souhaitez pour référence. À mon avis, c'est une meilleure pratique pour stocker votre réponse commeVbMsgBoxResult
de sorte que vous pouvez réellement voir la réponse.OriginalL'auteur Ben McCormack
Ce lien est pour VBScript, mais je pense que les codes de retour doit être la même:
Fonction MsgBox Référence
Les Codes de Retour vous dire quel bouton a été cliqué:
OriginalL'auteur Patonza
Ce sont des valeur de retour de MsgBox(). L'auteur a utilisé leur valeur symbolique, au lieu de rendre le programme plus lisible:
Voir ce Article MSDN pour plus d'info
OriginalL'auteur mjv
6 et 7 sont les codes de retour de la MsgBox méthode. En gros, quand MsgBox est appelé, il affiche une boîte de message à l'utilisateur qui clique sur "Oui", "Non", ou "Annuler". La sélection de l'utilisateur est renvoyé à partir de la MsgBox méthode comme un nombre, où 6 est Oui, et 7 N'est.
Il est considéré comme la meilleure pratique de ne pas utiliser ces numéros dans votre code directement, mais au lieu d'utiliser Microsoft fourni des constantes qui les représentent. Votre code peut être réécrite sous la forme:
Les constantes (vbNo, vbYes, etc) doit toujours être utilisé à la place de l'équivalent des entiers (6, 7, etc). Code qui utilise les entiers directement est mauvaise parce qu'elle est extrêmement difficile à lire. Les développeurs ne doivent pas utiliser les nombres entiers directement, mais doit utiliser l'équivalent de la constante. Espère que cela répond à votre question.
Vrai je suis d'accord avec vous. Les développeurs ne doivent pas utiliser les nombres entiers directement, mais l'utilisation de l'équivalent des constantes. Pourquoi ont-ils continuer à développer cette entiers comme l'équivalent des constantes. Parfois, il rend le programme plus compliqué.
OriginalL'auteur RB.
Le 6 et 7 sont codés en dur valeurs qui détiennent une signification particulière. 'MsgBox("Cliquez sur Oui...")' appel renvoie un nombre qui permettra à votre code de déterminer ce que l'utilisateur l'a fait avec la boîte de message et vous pouvez alors utiliser le conditionnel (SI votre consolidés) pour décider quoi faire ensuite.
Une liste complète de ces valeurs spéciales peuvent être trouvées dans la documentation MSDN ici:
http://msdn.microsoft.com/en-us/library/139z2azd(SV.80).aspx
OriginalL'auteur Jesse Taber
Juste réécrire l'équivalent:
Et de passer
OriginalL'auteur eglasius