Eingabemasken mit Kombinationsfeldern

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

Betrifft: Eingabemasken mit Kombinationsfeldern
von: Matthias
Geschrieben am: 10.11.2003 09:45:38

Hallo zusammen,
nachdem ich darauf aufmerksam gemacht wurde, dass meine letzte Problembeschreibung etwas unscharf war, hier nun die ausführliche Version.
1. Mein Ziel ist es mit einer UserForm eine Eingabemaske zu programmieren.
2. Diese Eingabemaske soll 4 Kombinationsfelder und 2 Textfelder enthalten.
3. Nachdem das 1. Kombinationsfeld beim öffnen des UserForm gefüllt werden soll, möchte ich, dass die Einträge in den nachfolgenden Kombinationsfeldern jeweils von der Wahl im vorherigen Kombinationsfeld abhängen.
4. Über einen CommandButton sollen anschließend die Daten aus dem UserForm in Datenblatt geschrieben werden.

Stand des Programms in der Umgebung "UserForm1":
1.
'Eintrag in das 1. Kombinationsfeld aus Tabellendaten (funktioniert)


Private Sub UserForm_Initialize()
    Dim c As Range
    For Each c In Sheets(1).Range("J3:J6")
        ComboBox1.AddItem c
    Next c
End Sub


Dieser Teil funktioniert!!!
____________________________________________
2. 'Eintrag in das 2. Kombinationsfeld in Abhängigkeit von Kombinationsfeld 1
'ListIndex 0 entspricht Zeile 1 im Kombinationsfeld 1 usw.

Private Sub ComboBox2_DropButtonClick()
    ComboBox2.Clear
    If ComboBox1.ListIndex = 0 Then
    ComboBox2.AddItem "101"
    ComboBox2.AddItem "102"
    ComboBox2.AddItem "103"
    ComboBox2.AddItem "104"
    ComboBox2.AddItem "105"
    ComboBox2.AddItem "106"
    ComboBox2.AddItem "107"
    ComboBox2.AddItem "108"
    ComboBox2.AddItem "109"
    ComboBox2.AddItem "110"
    ComboBox2.AddItem "201"
    ComboBox2.AddItem "202"
    ComboBox2.AddItem "305"
    ComboBox2.AddItem "306"
    ElseIf ComboBox1.ListIndex = 1 Then
    ComboBox2.AddItem "506"
    .
    .
    .
End If
End Sub

Das Problem bei diesem Programmteil ist, dass zum Füllen des 2. Komb.Feld das Feld zwar beim Klicken immer gelehrt wird und die Wahl des 1. Kombinationsfeldes abgefragt wird, dass aber auch wenn ich eine Wahl treffen will, also auf einen Eintrag klicke, alles wieder gelöscht wird
____________________________________________
3.
'mit diesem Programmteil, will ich die Daten nach Abschluss in die
'Tabelle eintragen lassen

Private Sub CommandButton1_Click()
    If ActiveSheet.Protect Then ActiveSheet.Unprotect
    On Error GoTo Errorhandler
    With ActiveSheet.Cells(Columns.Count, 1).End(xlUp)
        .Offset(1, 0).Value = ComboBox1
        .Offset(1, 1).Value = ComboBox2
    End With
    
    ComboBox1 = " "
    ComboBox2 = " "
    
    ActiveSheet.Protect
    Exit Sub
Errorhandler:
MsgBox "Falsche Eingabe"
End Sub

'Dieser Teil funktioniert
_____________________________________

Wie bereits beschrieben besteht das Problem im wesentlichen in der Abfrag ab dem 2. kombinationsfeld. Wenn ich den Clear-Befehl weglasse, verlängert sich die List mit jedem Klick.
Ich hoffe mir kann jemand helfen, da ich noch blutiger Anfänger bin und GAR NICHT mehr weiterkomme.
Vielen Dank für Eure Hilfe. Ich hoffe ich kann mich eines Tages revanchieren.
Matthias
Bild


Betrifft: AW: Eingabemasken mit Kombinationsfeldern
von: Andreas St
Geschrieben am: 10.11.2003 11:25:25

Hallo,

der Code ansich ist Ok. Er gehört aber nicht in das Click-Ereignis von Combobox 2, sondern in das Change-Ereignis von Combobox 1.

Gruss
Andreas


Bild


Betrifft: AW: Eingabemasken mit Kombinationsfeldern
von: Martin Bolleter
Geschrieben am: 10.11.2003 11:35:17

Hallo Matthias

deinen Teil 2 realisierst du über das DropButtonClick-Ereignis der zweiten ComboBox. Wie du richtig feststellst, löst du dieses Ereignis auch dann aus, wenn du eine Eingabe machen willst.

Ich würde daher vorschlagen, dass du das Füllen der Combobox2 über das Change-Ereignis der Combobox1 realisierst. Das macht ohnehin Sinn, denn nur wenn du in der ersten ComboBox eine Eingabe machst (resp den Wert änderst), muss die abhängige ComboBox2 entsprechend neu gefüllt werden.
Ich würde also den Teil 2 in der Private Sub ComboBox1_Change() unterbringen.

Viel Glück!
Gruss
Martin


Bild

Beiträge aus den Excel-Beispielen zum Thema " Button nicht drucken"