Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vbYes: welcher Variablen-Typ?

Forumthread: vbYes: welcher Variablen-Typ?

vbYes: welcher Variablen-Typ?
21.10.2008 15:17:44
David
Hallo zusammen,
Nur eine kurze Frage: wenn ich eine Msgbox mit Wahlmöglichkeit habe, z. Bsp. Ja/Nein, als welchen Typ muss ich dann die entsprechende Variable definieren? Sind das einfach nur Strings oder haben die irgendeinen speziellen Typ?
(mögliche Werte sind ja z. Bsp. vbYes, vbNo, vbCancel etc.)
Gruß
David
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:19:00
Hajo_Zi
Hallo David,
die kanns Du al Byte oder Integer definieren. Es steht da auch immer ein Zahlen wert dahinter, ich glaube bis 7.

AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:22:00
David
Danke Hajo,
ich hatte es jetzt erst mal als String definiert, das hat auch geklappt. Hab früher meist ohne zwingende Variablen-Deklaration gearbeitet, da war das kein Thema.
Aber die Zeiten ändern sich ... ;-)
Gruß
David
Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:20:46
Andi
Hi,
der Rückgabewert einer MsgBox ist vom Typ Integer;
vbYes etc sind nur Schlüsselwörter die einen Wert zwichen 1 und 7 repräsentieren.
Schönen Gruß,
Andi
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:26:00
David
Alles klar,
Danke.
Gruß
David
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:32:00
Reinhard
Hallo Andi,
bist du dir sicher?

Sub dd()
Dim T
T = MsgBox("frage", vbYesNoCancel)
MsgBox TypeName(T)
End Sub


Gruß
Reinhard

Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:34:00
Hajo_Zi
Hallo Reinhard,
ein Blick in Die Hilfe reicht manchmal auch
vbOK 1 Schaltfläche OK gedrückt
vbCancel 2 Schaltfläche Abbrechen gedrückt
vbAbort 3 Schaltfläche Abbruch gedrückt
vbRetry 4 Schaltfläche Wiederholen gedrückt
vbIgnore 5 Schaltfläche Ignorieren gedrückt
vbYes 6 Schaltfläche Ja gedrückt
vbNo 7 Schaltfläche Nein gedrückt
Gruß Hajo
Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 15:28:33
Reinhard
Hi David,
Long, siehe Code

Sub dd()
Dim T
T = vbYes
MsgBox TypeName(T)
End Sub


Um den Wert von z.B. vbyes zu sehen, über Ansicht das Direktfenster einblenden, dort dann eingeben:
?vbyes
und Enter drücken.
Gruß
Reinhard

Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 20:17:35
Nepumuk
Hallo Reinhard,
du könntest sie aber auch so deklarieren:
Public Sub Beispiel()
    Dim enmReturn As VbMsgBoxResult
    enmReturn = MsgBox("Klick 'nen Button", vbYesNoCancel, "Klick")
    Debug.Print enmReturn
End Sub

Die Rückgabewerte der Msgbox sind nämlich enumerierte Konstanten. Und die sind immer vom Typ Long, wie du richtig erkannt hast.
Gruß
Nepumuk
Anzeige
AW: vbYes: welcher Variablen-Typ?
21.10.2008 21:38:52
Reinhard
Hallo Nepumuk,
das was ich als richtig erkenne hält sich sehr in Grenzen :-))
Ich gehe aber davon aus alle vb... Konstanten sind als Long definiert.
Die Ausgangsfrage war ja, welchen Variablentyp hat vbyes.
Und das ist für mich eindeutig Long, siehe Code.
Jetzt kommt aber die MsgBox ins Spiel, die laut Vba-Hilfe einen Integerwert zurückliefert.
Das mag ja stimmen, aber nachprüfen kann zumindest ich das nicht, denn es erfolgt da wohl eine automatische Typumwandlung je nachdem wie ich die Variable deklariert habe die das Ergebnis der MsgBox aufnimmt.

Sub Test()
Dim a As Byte, b As String, c As Integer, d As Long, x
MsgBox TypeName(vbYes)
x = MsgBox("Frage", vbYesNoCancel)
a = x
b = x
c = x
d = x
MsgBox TypeName(a)
MsgBox TypeName(b)
MsgBox TypeName(c)
MsgBox TypeName(d)
End Sub


Mir ist es mit meinen kenntnissen nicht möglich festzustellen welchen Variablentyp das Ergebnis der MsgBox hat bevor ich/der Code das sehe ist es schon umgewandelt in den Variablentyp der Variablen in der ich es speichere,
Gruß
Reinhard

Anzeige
Jetzt reicht es aber... ;-)
22.10.2008 08:12:03
David
Hätte ich geahnt, welche Diskussionen ich mit meiner vermeintlich einfachen Frage lostrete, hätte ich die wohl gar nicht gestellt.
Danke allen Beteiligten. Ich denke, es ist auch nicht sooo wichtig, welche Variable es denn nun genau ist, solange es überhaupt funktioniert.
Viel Spass noch hier im Forum und bei der Gelegenheit mal einen herzlichen Dank an alle, die sich immer sehr bemühen, so ziemlich jedes Problem zu lösen und jede Frage ausführlich zu beantworten. Durch die Mitarbeit hier im Forum konnte ich meinen Excel- und VBA-Level schon erheblich (!) steigern.
Gruß
David
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen-Typen bei MsgBox in Excel VBA


Schritt-für-Schritt-Anleitung

  1. MsgBox-Funktion verwenden: Um eine MsgBox mit Auswahlmöglichkeiten zu erstellen, nutzt du die Funktion MsgBox. Beispiel:

    Dim answer As Integer
    answer = MsgBox("Möchtest du fortfahren?", vbYesNoCancel)
  2. Variablen-Typ definieren: Der Rückgabewert der MsgBox ist ein Integer. Du kannst die Variable als Integer, Byte oder Long deklarieren, je nach Bedarf.

    Dim T As Integer
    T = MsgBox("Frage", vbYesNoCancel)
  3. Verwendung von vbyes: Wenn der Benutzer auf "Ja" klickt, hat die Variable den Wert vbYes, der intern als Integer definiert ist.

    If T = vbYes Then
       MsgBox "Du hast Ja gewählt."
    End If
  4. Typ der Variablen prüfen: Du kannst den Typ der Variablen mit der Funktion TypeName überprüfen:

    MsgBox TypeName(T)

Häufige Fehler und Lösungen

  • Fehler: Variable als String definiert

    • Lösung: Stelle sicher, dass die Variable als Integer oder Long deklariert ist, um Werte wie vbYes, vbNo oder vbCancel korrekt zu speichern.
  • Fehler: Falscher Rückgabewert

    • Lösung: Überprüfe, ob du die MsgBox korrekt aufrufst und die Rückgabewerte richtig vergleichst, z.B. If T = vbNo Then.

Alternative Methoden

  • Enum verwenden: Du kannst auch den Typ VbMsgBoxResult verwenden, um die Rückgabewerte klarer zu definieren:

    Dim enmReturn As VbMsgBoxResult
    enmReturn = MsgBox("Klick 'nen Button", vbYesNoCancel)
  • Debugging mit Direktfenster: Um den Wert von vbyes im Direktfenster zu sehen, gib einfach ?vbyes ein und drücke Enter.


Praktische Beispiele

  1. Einfaches Ja/Nein-Beispiel:

    Sub Frage()
       Dim Antwort As Integer
       Antwort = MsgBox("Möchtest du das Programm schließen?", vbYesNo)
       If Antwort = vbYes Then
           MsgBox "Programm wird geschlossen."
       Else
           MsgBox "Programm bleibt geöffnet."
       End If
    End Sub
  2. MsgBox mit Abbrechen-Option:

    Sub Abbrechen()
       Dim Antwort As Integer
       Antwort = MsgBox("Möchtest du speichern?", vbYesNoCancel)
       Select Case Antwort
           Case vbYes
               MsgBox "Gespeichert."
           Case vbNo
               MsgBox "Nicht gespeichert."
           Case vbCancel
               MsgBox "Abgebrochen."
       End Select
    End Sub

Tipps für Profis

  • Verwende Konstanten: Nutze Konstanten wie vbYes, vbNo und vbCancel, um den Code lesbarer zu machen.
  • Typensicherheit: Achte darauf, Variablen klar zu definieren, um Typkonflikte zu vermeiden.
  • Debugging: Nutze das Debugging-Werkzeug in der VBA-Entwicklungsumgebung, um den Fluss deines Codes zu überprüfen und Fehler schnell zu finden.

FAQ: Häufige Fragen

1. Welchen Variablen-Typ sollte ich für MsgBox-Rückgaben verwenden?
Der Rückgabewert einer MsgBox ist in der Regel vom Typ Integer oder Long.

2. Wie kann ich überprüfen, welche Schaltfläche der Benutzer gedrückt hat?
Vergleiche den Rückgabewert der MsgBox mit vbYes, vbNo oder vbCancel, um die Auswahl des Benutzers zu bestimmen.

3. Was sind die Werte von vbYes, vbNo und vbCancel?
vbYes hat den Wert 6, vbNo hat den Wert 7 und vbCancel hat den Wert 2. Diese Werte sind Konstanten, die in VBA verwendet werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige