Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mesagebox mit Auswahl

Mesagebox mit Auswahl
30.11.2015 22:34:49
Tobi
Guten Abend.
Ich benötige eine Messagebox mit zwei Auswahlfeldern.
Feld 1 = Auto
Feld 2 = Bus
Nach Auswahl soll die Auswahl in die Variable Auswahl gespeichert werden.
Wie kann man das hinbekommen?
Schönen Abend Tobias

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mesagebox mit Auswahl
30.11.2015 23:49:17
Matthias
Hallo Tobi,
nimm dafür am besten eine Userform, dort kannst du dir die entsprechenden Buttons basteln. Oder du änderst deine Fragestellung so dass sie mit Ja/Nein beantwortet werden kann, dann kann man auch die herkömliche Messagebox nehmen.
Die Userform wird wie in der Beispielmappe ( https://www.herber.de/bbs/user/101916.xlsm ) über dein Makro gestartet und per Buttonklick einer Variablen (hier "sFahrzeug") ein Wert zugewiesen. Damit diese nach dem Schließen der Userform erhalten bleibt muss sie öffentlich deklariert sein, was erreicht wird indem man statt "Dim" "Public" vor die Variable schreibt und diese Zeile oberhalb des eigentlichen Makros im Modul stehen hat.
Das führt aber auch dazu dass du bei mehrfacher Ausführung Probleme kriegen kannst wenn du die Variable am Ende deines Makros nicht auf Anfang setzt, denn sie behält ja ihren letzten Wert. Bedenke dass bei einem Klick auf das kleine X die Userform geschlossen werden kann ohne einen Wert zu übergeben und du desshalb einen falschen Wert (den vom vorherigen Ausführen) oder auch einen leeren String haben kannst.
lg Matthias

Anzeige
AW: Mesagebox mit Auswahl
01.12.2015 09:27:27
Tobi
Hallo Matthias,
danke. Aber ich bekomme es nicht hin das die Variable sFahrzeug aus dem Userform ins Makro übergeben wird :(
Gruß
TObi

AW: Mesagebox mit Auswahl
01.12.2015 11:16:20
Rudi
Hallo,
für Matthias' Mappe:
in der UF:
Private Sub Commandbutton1_Click()
DeinMakro ActiveControl.Caption
Hide
End Sub
Private Sub Commandbutton2_Click()
DeinMakro ActiveControl.Caption
Hide
End Sub
im Modul:
Sub DeinMakro(sFahrzeug As String)
If sFahrzeug = "" Then
MsgBox "Es wurde kein Fahrzeug gewählt!"
Else
MsgBox "Gewähltes Fahrzeug: " & sFahrzeug
End If
End Sub
Sub start()
UserForm1.Show
End Sub
Gruß
Rudi

Anzeige
AW: Mesagebox mit Auswahl
01.12.2015 11:27:15
Tobi
Hallo, vielen Dank für die Antwort.
Ich müsste aber in das Makro zurück kehren.
Sub DeinMakro()
UserForm1.Show 'Hier wird Auto oder Bus ausgewählt
If sFahrzeug = "Auto" Then
End If
If sFahrzeug = "Bus" Then
End If
sFahrzeug = "" 'am Ende zurücksetzen
End Sub

Gruß Tobi

Anzeige
AW: Messagebox mit Auswahl
01.12.2015 11:56:31
Rudi
Hallo,
dann wie in Matthias Datei beschrieben.
Gruß
Rudi

AW: Messagebox mit Auswahl
01.12.2015 23:01:30
Matthias
Hallo Tobi,
dann nochmal Schritt für Schritt:
1. Userform erstellen und zwei Buttons und ein Bezeichnusfeld einfügen. Deren Beschriftung kannst du ändern indem du F4 drückst und in dem Eigenschaftsfenster die 'Caption' anpasst.
2. Die Klick-Ereignisse in die Userform einfügen. Dazu Rechtsklick auf die Userform - 'Code _ anzeigen'.

Private Sub Commandbutton1_Click()
sFahrzeug = "Auto"
Unload Me
End Sub
Private Sub Commandbutton2_Click()
sFahrzeug = "Bus"
Unload Me
End Sub
3. Die öffentliche Variable anlegen. Dazu folgende Zeile zwingend in ein Modul (nicht in ein _ Tabellenblatt) oberste Zeile kopieren, sonst funktioniert es nicht:

Public sFahrzeug As String
4. In dein Makro an der Stelle wo du deine "Messagebox" haben willst die Userform aufrufen:
UserForm1.Show
Ab jetzt sollte deine Variable den entsprechenden Wert haben und du kannst damit arbeiten.
5. Wir müssen sicherstellen, dass das Makro keinen Mist baut wenn die Userform mit dem kleinen _ X geschlossen wurde. Daher folgendes unter die Zeile UserForm1.Show:

If sFahrzeug = "" Then
MsgBox "Es wurde kein Fahrzeug gewählt!"
Exit Sub 'beende Makro (bzw. Grundeinstellungen vorher vornehmen)
End If
6. Als letzte Zeile in deinem Makro dann die Variable zurücksetzen:
sFahrzeug = ""
Hoffe es war jetzt verständlicher.
lg Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Messagebox mit Auswahl in Excel VBA erstellen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Userform: Öffne den VBA-Editor (ALT + F11) und füge eine neue Userform hinzu.

  2. Füge Buttons hinzu: Platziere zwei Schaltflächen auf der Userform, zum Beispiel "Auto" und "Bus". Ändere die Beschriftung der Buttons durch Auswahl des Buttons und Drücken von F4, um die Eigenschaften zu öffnen.

  3. Code für die Buttons: Füge den folgenden Code in die Userform ein, um die Auswahl zu verarbeiten:

    Private Sub CommandButton1_Click()
        sFahrzeug = "Auto"
        Unload Me
    End Sub
    
    Private Sub CommandButton2_Click()
        sFahrzeug = "Bus"
        Unload Me
    End Sub
  4. Öffentliche Variable deklarieren: Deklariere die öffentliche Variable sFahrzeug in einem Modul:

    Public sFahrzeug As String
  5. Userform im Makro aufrufen: Rufe die Userform in deinem Hauptmakro auf:

    Sub DeinMakro()
        UserForm1.Show
        If sFahrzeug = "" Then
            MsgBox "Es wurde kein Fahrzeug gewählt!"
            Exit Sub
        End If
        MsgBox "Gewähltes Fahrzeug: " & sFahrzeug
        sFahrzeug = ""
    End Sub
  6. Fehlerbehandlung hinzufügen: Stelle sicher, dass dein Makro keine Fehler verursacht, wenn die Userform mit dem kleinen X geschlossen wird.


Häufige Fehler und Lösungen

  • Problem: Die Variable sFahrzeug bleibt leer.

    • Lösung: Überprüfe, ob die Userform korrekt aufgerufen wird und die Buttons korrekt mit der Variable sFahrzeug verbunden sind.
  • Problem: Es wird ein falscher Wert angezeigt.

    • Lösung: Setze die Variable sFahrzeug am Ende des Makros zurück, um sicherzustellen, dass der alte Wert nicht erhalten bleibt.

Alternative Methoden

Wenn du keine Userform verwenden möchtest, kannst du auch eine einfache MsgBox mit Ja/Nein-Optionen nutzen. Hier ein Beispiel:

Dim Antwort As Integer
Antwort = MsgBox("Möchtest du Auto oder Bus wählen?", vbYesNo + vbQuestion, "Fahrzeugwahl")

If Antwort = vbYes Then
    MsgBox "Du hast Auto gewählt."
Else
    MsgBox "Du hast Bus gewählt."
End If

Dies ist jedoch weniger flexibel als die Verwendung einer Userform mit individuellen Auswahlmöglichkeiten.


Praktische Beispiele

Hier ist ein einfaches Beispiel für eine Userform mit zwei Auswahlmöglichkeiten:

Private Sub CommandButton1_Click()
    sFahrzeug = "Auto"
    Unload Me
End Sub

Private Sub CommandButton2_Click()
    sFahrzeug = "Bus"
    Unload Me
End Sub

In deinem Hauptmakro kannst du dann die Auswahl wie folgt verwenden:

Sub DeinMakro()
    UserForm1.Show
    If sFahrzeug = "" Then
        MsgBox "Es wurde kein Fahrzeug gewählt!"
        Exit Sub
    End If
    MsgBox "Gewähltes Fahrzeug: " & sFahrzeug
    sFahrzeug = ""
End Sub

Tipps für Profis

  • Variablen richtig deklarieren: Es ist wichtig, die Variablen am Anfang deines Moduls zu deklarieren, um Missverständnisse zu vermeiden.
  • Fehlerbehandlung: Nutze On Error GoTo für eine bessere Fehlerkontrolle in deinem VBA-Code.
  • Userform anpassen: Gestalte deine Userform ansprechend, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich die Userform anpassen?
Du kannst die Eigenschaften der Userform über das Eigenschaftenfenster im VBA-Editor ändern, einschließlich Größe, Farbe und Schriftart.

2. Was mache ich, wenn die Userform nicht angezeigt wird?
Stelle sicher, dass du die Userform korrekt im Makro aufrufst. Prüfe auch, ob es Fehler im Code gibt, die die Ausführung verhindern könnten.

3. Ist es möglich, mehr als zwei Optionen in der Userform zu haben?
Ja, du kannst so viele Buttons oder Auswahlfelder hinzufügen, wie du benötigst, um verschiedene Optionen anzubieten.

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