Zu verstehen, was-response-codes wieder aus der MsgBox
Ich bin sehr neu in der Programmierung und ich bin gerade erst anfangen zu lernen, VBA mit excel. Ich stieß auf diese Seite und habe die Beispiele hier, aber ich habe eine Frage zu diesem code:
Ich weiß, die Variablen sind deklariert mit "Dim" - Anweisung "Nachricht" ist hier die variable mit dem Datentyp integer. Was ich nicht eindeutig verstehe, ist; was ist die Bedeutung von "6" hier und "7". Ich glaube, Sie kommen von irgendwo. Aber als ich gerade angefangen zu lernen, dieses Programm, ich habe keine Idee. Könnten Sie mir bitte sagen, wie es am Ende auf "6" und "7". Ich glaube, es gibt eine gewisse basis, die hier
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
Danke für Eure Hilfe:-)
=======
Danke Jungs für die Antworten, Sie sind sehr hilfreich. Ja, dieser thread wurde schon gepostet, in den superuser-Website. Ich wurde darüber informiert, dass diese Frage gehören sollte, hier, so habe ich es hier gepostet nach dem Lesen, dass Sie es automatisch tun von superuser auf stackoverflow.
Dank noch einmal
ok, ich poste diese Frage auf Stackoverflow, obwohl ich die Antwort bereits kennen, nicht wirklich sicher, ob das hilft.
Nicht posten Sie Ihre Frage dort, ist es ein system der migration zwischen den Standorten, Ihre Frage wird migriert werden (sobald genug Personen, die für ihn Stimmen, oder ein moderator tut es). Wenn Sie es post gibt, wird es höchstwahrscheinlich ein Duplikat, wenn dieses verschoben werden (ich weiß, es ist nicht ganz klar am Anfang, aber man gewöhnt sich daran 😉 )
tut mir Leid, dass ich schon poste es dort. Ich lese die Kommentare schon sehr spät. Ich hoffe, ich werde keine Strafe:-(
Obwohl, wenn Sie hier Ihre Antwort, zögern Sie nicht, klicken Sie auf "tick" neben der richtigen Antwort.
InformationsquelleAutor tintincutes | 2009-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
MsgBox
zurück einEnum(eration)
genanntMsgBoxResult
, was im Grunde nichts anderes, dann die numerischen Werte mit einem 'label'. 6 und 7 in diesem Fall sind die Mitglieder dieser enum, die zugeordnet sind, die AntwortenYes
undNo
.Verwendung von sogenannten 'magischen zahlen' anstelle von Konstanten oder Enumerationen, die sollten wenn immer möglich vermieden.
Im Grunde könnte man den code neu schreiben:
Könnte sein, dass der Enum heißt vbMsgBoxResult oder so... ich habe nicht ein Amt, um dies zu überprüfen, nur Visual Studio.
Während wir es auf... dies ist leichter zu verstehen:
danke. Ich denke, mit den Namen anstelle von Nummern, was Enumerationen sind alle über, und ich Liebe es einfach, enums. 😉
vielen Dank Bobby für die sehr gute Antwort, vor allem, wenn diese Frage gehört zu Stackoverflow:-) ich bin mir nicht sicher, ob ich habe, um dies zu öffnen, Stackoverflow, obwohl oder gerade lassen es hier wie diesem. +1 🙂
der erste code funktioniert nicht. ich bekam eine Fehlermeldung "Laufzeitfehler "424" Objekt erforderlich"... nicht wirklich sicher, warum?
auch der Letzte code mit select case funktioniert es nicht. Ich habe den gleichen Fehler wie oben.
InformationsquelleAutor Bobby
Es ist sehr schlecht geschrieben code, "6" und "7" sind die Werte der Konstanten "vbYes" und "vbNo", wo zurückgegeben, wenn der Benutzer auf ja oder Nein klickt auf den dialog.
Referenz: http://www.techonthenet.com/access/constants/msgbox_ret.php
Den code sagen sollte
statt
So, dass es klar ist, was passiert ist.
InformationsquelleAutor Brian Schroth
Als ich anfing, mit
MsgBox
Antworten, die ich fast immer erklärt, die Antwort alsInteger
. Allerdings habe ich gelernt, dass das beste, was zu tun ist, zu erklären, Ihremessage
variable alsVbMsgBoxResult
, das ist eine Aufzählung, die zeigt immer die möglichen Antworten. In der Abbildung unten, der IDE (z.B. Visual Basic für Applikationen-editor) zeigen Sie die möglichen Optionen, die inVbMsgBoxResult
.Du könnte speichern Sie Ihre
answer
variable alsInteger
da alle Variablen in der Enumeration (z.B.vbAbort
,vbYes
,vbOK
usw.) in der Tat behoben zu zahlen. Jedoch, Sie müssen herausfinden, was die integer-Werte für die Variablen werden jedes mal, wenn Sie wollen, zu verweisen. Meiner Meinung nach, ist es eine bessere Praxis, um speichern Sie Ihre Antwort alsVbMsgBoxResult
so können Sie tatsächlich sehen, wie die möglichen Antworten.InformationsquelleAutor Ben McCormack
Dieser link ist für VBScript, aber ich denke, dass die Rückkehr-codes sollte der gleiche sein:
MsgBox-Funktion Referenz
Den Return-Codes Ihnen sagen, welche Taste geklickt wurde:
InformationsquelleAutor Patonza
Diese sind in der Rückgabewert von MsgBox(). Der Autor verwendet Ihre symbolischen Wert statt, um das Programm besser lesbar:
Sehen diese MSDN-Artikel für mehr info
InformationsquelleAutor mjv
6 und 7 werden die return-codes von der MsgBox-Methode. Im Grunde, wenn die MsgBox aufgerufen wird, zeigt eine message-box, um den Benutzer, der klickt entweder auf "ja", "Nein" oder "Abbrechen". Von der Auswahl des Benutzers wird zurückgegeben von der MsgBox-Methode als eine Reihe, wo 6 ja, 7 Nein.
Es ist als best-practice nicht zu verwenden, diese zahlen in Ihren code direkt, sondern verwenden Microsoft angegebenen Konstanten, die Sie vertreten. Der code kann neu geschrieben werden als:
Die Konstanten (vbNo, vbYes, etc) sollte immer verwendet werden, statt von der Entsprechung ganze zahlen (6, 7, etc). Code, der mithilfe der ganzen zahlen direkt ist schlecht, weil es ist extrem schwer zu Lesen. Entwickler sollten nicht verwenden, die ganze zahlen direkt, sollte aber verwenden Sie die entsprechende Konstante. Hoffe, dass beantwortet deine Frage.
Stimmt, ich Stimme mit Ihnen überein. Entwickler sollten nicht verwenden, die ganze zahlen direkt, sondern verwenden Sie die entsprechende Konstanten. Warum haben Sie noch entwickeln, diese Integer-Konstanten entspricht. Manchmal macht das Programm komplizierter.
InformationsquelleAutor RB.
Den 6 und 7 sind hart codiert werden Werte, die halten eine Besondere Bedeutung. 'MsgBox("Klicken Sie auf "ja"...")' - Aufruf wird eine Zahl zurückgeben, lassen Sie Ihre code bestimmen, was der Benutzer hat, mit der Nachricht und Sie können dann-Bedingungen (IF-statements), um zu entscheiden, was als Nächstes zu tun ist.
Eine vollständige Liste dieser speziellen Werte finden Sie in der MSDN-Dokumentation hier:
http://msdn.microsoft.com/en-us/library/139z2azd(VS.80).aspx
InformationsquelleAutor Jesse Taber
Nur umschreiben, um das äquivalent:
Bewegen und auf
InformationsquelleAutor eglasius