Mesagebox mit Auswahl

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Mesagebox mit Auswahl
von: Tobi
Geschrieben am: 30.11.2015 22:34:49

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

Bild

Betrifft: AW: Mesagebox mit Auswahl
von: Matthias
Geschrieben am: 30.11.2015 23:49:17
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

Bild

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

Bild

Betrifft: AW: Mesagebox mit Auswahl
von: Rudi Maintaire
Geschrieben am: 01.12.2015 11:16:20
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

Bild

Betrifft: AW: Mesagebox mit Auswahl
von: Tobi
Geschrieben am: 01.12.2015 11:27:15
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

Bild

Betrifft: AW: Messagebox mit Auswahl
von: Rudi Maintaire
Geschrieben am: 01.12.2015 11:56:31
Hallo,
dann wie in Matthias Datei beschrieben.
Gruß
Rudi

Bild

Betrifft: AW: Messagebox mit Auswahl
von: Matthias
Geschrieben am: 01.12.2015 23:01:30
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

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Mesagebox mit Auswahl"