HERBERS Excel-Forum - das Archiv
Mesagebox mit Auswahl
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

AW: Mesagebox mit Auswahl
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

AW: Mesagebox mit Auswahl
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
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

AW: Mesagebox mit Auswahl
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

AW: Messagebox mit Auswahl
Rudi

Hallo,
dann wie in Matthias Datei beschrieben.
Gruß
Rudi

AW: Messagebox mit Auswahl
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

Mesagebox mit Auswahl
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

AW: Mesagebox mit Auswahl
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

AW: Mesagebox mit Auswahl
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
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

AW: Mesagebox mit Auswahl
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

AW: Messagebox mit Auswahl
Rudi

Hallo,
dann wie in Matthias Datei beschrieben.
Gruß
Rudi

AW: Messagebox mit Auswahl
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

Dialog-Beispiele
Bewerten Sie hier bitte das Excel-Portal