Dreispaltige Kombobox in UF

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

Betrifft: Dreispaltige Kombobox in UF
von: Franz W.
Geschrieben am: 24.11.2003 09:00:12

Guten Morgen Forum,

ich bin ein Neuling mit UF und Combos, darum hab ich da so meine Schwierigkeiten.

- Ich habe eine dreispaltige Kombobox "cmbStrasse", die im Eigenschaftenfenster per RowSource gefüllt wird mit dem Namen eines dreispaltigen Bereiches. Die drei Spalten: Strasse - PLZ - Ort

- dann habe ich noch zwei weitere Textfelder "txtPLZ" für die PLZ und "txtOrt" für den Ort.

- Wenn in cmbStrasse ein Wert schon vorhanden ist, übergebe ich die jeweils dazugehörigen Werte an die anderen beiden Textfelder bisher mit folgendem Code:


Private Sub cmbStrasse_Change()
    Set KdRng = Worksheets("help").Range("Adressen")
    With Application.WorksheetFunction
        Liste enthalten ist, dann ist der ListIndex > -1
        If cmbStrasse <> "" And cmbStrasse.ListIndex > -1 Then
            txtPLZ = Format(.VLookup(cmbStrasse, KdRng, 2, False), "00000")
            txtOrt = .VLookup(cmbStrasse, KdRng, 3, False)
        Else
            txtPLZ = ""
            txtOrt = ""
        End If
    End With
End Sub


Nun ist mir aber gesagt worden, dass der Umweg über "VLookup" viel zu umständlich ist, nachdem die Daten ohnehin schon mir RowSource eingelesen sind.

Wie kann ich denn die Daten einfacher direkt an die beiden Textfelder übergeben?

Vielen Dank schon mal für Eure Hilfe und Grüße
Franz
Bild


Betrifft: AW: Dreispaltige Kombobox in UF
von: Nepumuk
Geschrieben am: 24.11.2003 09:33:45

Hallo Franz,
ich habe dir mal ein kleines Beispiel gemacht. Das funktioniert allerdings nicht mit RowSource, da du mit der Methode die PLZ und den Ort nicht aus der Combobox bekommst. Die Style-Eigenschaft der Combobox ist auf 2 gestellt, so das nur vorhandene Einträge ausgewählt werden können. https://www.herber.de/bbs/user/2126.xls
Gruß
Nepumuk


Bild


Betrifft: AW: Dreispaltige Kombobox in UF
von: Franz W.
Geschrieben am: 24.11.2003 09:41:46

Guten Morgen Nepumuk,

vielen Dank, ich mach mich mal drüber, melde mich dann wieder.

Beste Grüße bis dahin
Franz


Bild


Betrifft: Eine Frage noch...
von: Franz W.
Geschrieben am: 24.11.2003 11:25:10

Hallo Nepumuk,

hab Deins jetzt bei mir eingearbeitet - und es klappt bestens!! Brauche es so, dass auch neue Einträge geschrieben werden können und hab darum Style wieder auf 0 gesetzt und den Code angepasst:


Private Sub UserForm_Activate()
    Dim varArray As Variant
    varArray = Range("Adressen")
    cmbStrasse.List = varArray
End Sub



Private Sub cmbStrasse_Change()
    If Not bolaendern And cmbStrasse.ListIndex > -1 Then
        txtPLZ = cmbStrasse.List(cmbStrasse.ListIndex, 1)
        txtOrt = cmbStrasse.List(cmbStrasse.ListIndex, 2)
    Else
        txtPLZ = ""
        txtOrt = ""
    End If
    bolaendern = False
End Sub



Was ich allerdings noch gar nicht verstehe, ist Dein folgender Code:


Private Sub cmbStrasse_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Or KeyCode = 46 Then bolaendern = True
End Sub


Was macht dieser Code? Für welche Tasten stehen KeyCode = 8 bzw. 46 (wo kann ich eine komplette KeyCode-Liste finden? In der Hilfe hab ich's nicht gefunden).

Vielleicht kannst Du mir bitte diese Fragen noch beantworten.

Vielen Dank und Grüße
Franz


Bild


Betrifft: AW: Eine Frage noch...
von: Nepumuk
Geschrieben am: 24.11.2003 11:34:04

Hallo Franz,
ich lass mir die einfach über eine Msgbox ausgeben. 8 steht für Backspace und 46 für Entf. Der Code verhindert, dass die Combobox auf diese Tasten reagiert dann steht nämlich der Listindex auf -1 und es würde bei holen der Daten aus der List - Eigenschaft ein Fehler verursacht.
Gruß
Nepumuk


Bild


Betrifft: AW: Eine Frage noch...
von: Franz W
Geschrieben am: 24.11.2003 11:42:20

Hallo Nepumuk,

kann das sein, dass bei meiner Einstellung mit "Style = 0" dieser von Dir beschriebene Fehler (wie würde der aussehen) auch ohne diesen Code NICHT auftritt. Bei meinen Versuchen hat es bisher nämlich noch keinen Fehler gegeben!?! Oder habe ich noch nicht alles mögliche durchgespielt?!?

Grüße
Franz


Bild


Betrifft: AW: Eine Frage noch...
von: Nepumuk
Geschrieben am: 24.11.2003 12:08:46

Hallo Franz,
kommentiere diese drei Zeilen mal aus, wähle eine Straße aus und drücke auch Backspace. Da kommt bei mir sofort der Fehler: Laufzeitfehler 381


Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Or KeyCode = 46 Then bolaendern = True
End Sub


Gruß
Nepumuk


Bild


Betrifft: AW: Eine Frage noch...
von: Franz W.
Geschrieben am: 24.11.2003 12:45:46

Hallo Nepumuk,

hab das jetzt noch mal mit Deiner Originaldatei, die Du mir geschickt hast, durchgespielt.

Schritt für Schritt:

1. Ich kommentiere die drei KeyDown-Zeilen aus (Style = 2): gar kein Effekt, er reagiert nicht auf Rück- oder Entf-Taste

2. Lasse die Zeilen auskommentiert, ändere Style = 0 : Laufzeitfehler 381 wie bei Dir

3. Aber wegen meiner Änderung von Style auf 0 (weil ich eben auch Einträge zulassen will, die nicht in der Liste stehen), hab ich ja auch die Abfrage (If Not bolaendern Then) geändert in:
" If ComboBox1.ListIndex <> -1 Then ". Und damit gibt es keinen Fehler mehr.
Hab auch noch ein "Else" mit rein, damit die beiden Textboxen entsprechend reagieren.

Der gesamte Code jetzt:


Private Sub ComboBox1_Change()
    If ComboBox1.ListIndex <> -1 Then
        TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
        TextBox2 = ComboBox1.List(ComboBox1.ListIndex, 2)
    Else
        TextBox1 = ""
        TextBox2 = ""
    End If
End Sub


Und jetzt ist es so flexibel, wie ich es haben möchte.

Wie beurteilst Du das jetzt? Glaubst Du, das ist sicher so und man kann es lassen???

Grüße
Franz


Bild


Betrifft: AW: Eine Frage noch...
von: Nepumuk
Geschrieben am: 24.11.2003 13:34:18

Hallo Franz,
ich hätte es auch nicht anders gemacht.
Glückwunsch
Nepumuk


Bild


Betrifft: Jetzt werd ich aber rot...!!
von: Franz W.
Geschrieben am: 24.11.2003 14:06:20

Hallo Nepumuk,

vielen Dank für die Blumen! Freut mich natürlich sehr, so ein Kompliment zu bekommen. Aber trotzdem ganz vielen Dank für Deine Vorlage, ohne die hätt ich das nie hingekriegt.

Besten Dank und Grüße
Franz

P.S.: Bin gleich mit einer neuen Frage zu Combos wieder im Forum ;-)))), versuch schon ne Weile, kriegs aber nicht hin. Vielleicht bis gleich ... :-))


Bild

Beiträge aus den Excel-Beispielen zum Thema " Erste Zeile auf jeder Seite drucken"