Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eintrag einer Combobox mit 2 Spalten auswählen

Forumthread: Eintrag einer Combobox mit 2 Spalten auswählen

Eintrag einer Combobox mit 2 Spalten auswählen
09.02.2017 18:09:59
Jens
Hallo zusammen
Ich bin ein wenig am verzweifeln und konnte leider leider nichts passendes finden.
Ich habe eine Combobox, die ich mit Werten aus einer Tabelle folgendermasen gefüllt habe:
For i = 1 To tab_name.Cells(1, 2).End(xlDown).Row
With formular1.cbo_Name
.AddItem
.List(.ListCount - 1, 0) = tab_name.Cells(i, 2)
.List(.ListCount - 1, 1) = tab_name.Cells(i, 3)
End With
next I
'tab_name.Cells(i, 2) enthält den Namen des Mitarbeiter
'tab_name.Cells(i, 3) enthält die Personalnummer
Durch einen Doppelklick in der Tabelle Basis soll das Formular geöffnet und alle Felder des Formular gefüllt werden.
Da ich manche Namen doppelt habe und nur die Personalnummer eindeutig ist, möchte ich den Eintrag der Combobox über die zweite Spalte auswählen.
Solange ich in der Combobox nur eine Spalte hatte, habe ich es folgendermasen gemacht:
formular1.cbo_Name = basis.Cells(zeile, 3)
'In Zeile wird vorher die Zeilenzahl ermittelt
Dieser Aufruf funktioniert soweit auch, jedoch nimmt er mir bei doppelten Namen immer den oberen.
Beispiel:
Meier 123
Meier 234
Ich möchte den unteren Meier auswählen.
Für Eure Unterstützung schon mal vorab Vielen Dank
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Eintrag einer Combobox mit 2 Spalten auswählen
09.02.2017 18:16:08
Werner
Hallo Jens,
Versuch doch mal beim Befüllen deiner ComboBox die Personalnummer in die erste Spalte und die Namen der Mitarbeiter in die zweite Spalte einzulesen. Dann hast du in der ersten Spalte deiner ComboBox nur einmalige Einträge.
Gruß Werner
AW: Eintrag einer Combobox mit 2 Spalten auswählen
09.02.2017 19:42:56
Matthias
Hallo! Falls die Variante von Werner nicht geht, nutze den listindex der Combobox iVm mit dem Change Ereignis. Damit bekommst du die Zeile des ausgewählten Elementes. Aber Vorsicht es ist 0 basierend. Also die erste Zeile in der Combobox hat die Zeilennummer 0. HIer mal ein Beispiel zum Testen:
Private Sub ComboBox1_Change()
MsgBox formular1.cbo_Name.ListIndex
End Sub

Das einfach einfügen. Wenn du nun aus der Listbox was auswählst, wird dir die Nummer der Zeile angezeigt.
MIt diesem Listindex kannst du dann beliebig weiter arbeiten.
VG
Anzeige
AW: Eintrag einer Combobox mit 2 Spalten auswählen
10.02.2017 12:52:11
Jens
Hallo
Vielen Dank schon mal.
Beide Lösungsansätze könnte ich mir vorstellen, doch haben beide einen Haken.
Da ich nur eine Spalte angezeigt bekomme, würde ich gerne den Namen und nicht die Kundennummer nach der Auswahl sehen. Kann ich mir beide Spalten anzeigen lassen oder auswählen welche Spalte angezeigt wird.
Mit dem Listindex konnte ich die Zeile auslesen.
Ich habe es aber nicht geschafft, darüber einen Wert auszuwählen.
Gruß Jens
Anzeige
AW: Beispieldatei
10.02.2017 13:21:00
Werner
Hallo Jens,
jetzt ist bei mir mehr unklar als vorher.
Du hast doch eine ListBox mit zwei Spalten Name und Kundennummer, oder hast du eine ListBox mit zwei Spalten und es wird nur eine der Spalten angezeigt?
Da ich nur eine Spalte angezeigt bekomme, würde ich gerne den Namen und nicht die Kundennummer nach der Auswahl sehen. Kann ich mir beide Spalten anzeigen lassen oder auswählen welche Spalte angezeigt wird.
Und das verstehe ich nicht.
Lad doch mal eine Beispielmappe hoch, vielleicht wird dann das Ganze etwas klarer.
Gruß Werner
Anzeige
AW: Beispieldatei
13.02.2017 22:43:59
Jens
Hallo Werner
Ich habe Deinen Vorschlag weiterverfolgt und bin zu einer Lösung gekommen.
Es handelt sich um eine Combobox. Hier ist es (soweit ich weiß) nicht möglich mehrere Spalten angezeigt zu bekommen.
Ich habe das Eigenschaftsfeld "TextColumn" gefunden. Wenn dieser Wert auf 2 steht, wird die zweite Spalte angezeigt. Über eine einfache Zuweisung mit "=" wird der Wert der ersten Spalte ausgewählt und die zweite Spalte angezeigt.
Somit kann ich über die Personalnummer den Mitarbeiter auswählen, bekomme aber wie gewünscht den Namen des Mitarbeiter angezeigt.
Vielen Dank Euch beiden für Eure Hilfe
Gruß Jens
Anzeige
AW: Danke für die Rückmeldung und.....
13.02.2017 23:02:48
Werner
Hallo Jens,
Das geht auch mit einer ListBox
-ListBox mit zwei Spalten
-Spalte 1 Personalnummer / Spalte 2 Name
-Breite der ersten Spalte in den Eigenschaften auf 0 setzen
Schon hast du eine zweispaltige ListBox bei der nur die zweite Spalte angezeigt wird.
Gruß Werner
;
Anzeige
Anzeige

Infobox / Tutorial

Eintrag einer Combobox mit 2 Spalten auswählen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Daten: Stelle sicher, dass deine Daten in einer Excel-Tabelle gut strukturiert sind. Zum Beispiel solltest du die Namen in der zweiten Spalte und die Personalnummern in der dritten Spalte haben.

  2. Befüllen der Combobox: Verwende den folgenden VBA-Code, um die Combobox mit Werten aus der Tabelle zu füllen:

    For i = 1 To tab_name.Cells(1, 2).End(xlDown).Row
       With formular1.cbo_Name
           .AddItem
           .List(.ListCount - 1, 0) = tab_name.Cells(i, 2)
           .List(.ListCount - 1, 1) = tab_name.Cells(i, 3)
       End With
    Next i
  3. Wählen eines Eintrags: Um einen Eintrag zu wählen, kannst du den Namen oder die Personalnummer verwenden. Wenn du beispielsweise die Personalnummer verwenden möchtest, kannst du den Code wie folgt anpassen:

    formular1.cbo_Name = basis.Cells(zeile, 3)
  4. Anzeigen der gewünschten Spalte: Wenn du möchtest, dass beim Auswahlvorgang der Name angezeigt wird, kannst du die Eigenschaft TextColumn in der Combobox setzen:

    formular1.cbo_Name.TextColumn = 2

Häufige Fehler und Lösungen

  • Fehler: Die Combobox zeigt nicht die gewünschte Spalte an.

    • Lösung: Stelle sicher, dass die TextColumn auf die richtige Spalte gesetzt ist. Wenn du die Personalnummer in der ersten Spalte hast und den Namen in der zweiten, setze TextColumn auf 2.
  • Fehler: Bei doppelten Namen wird immer der obere Eintrag gewählt.

    • Lösung: Nutze den ListIndex, um die Zeile des ausgewählten Eintrags zu ermitteln. Dies kannst du so umsetzen:
      Private Sub ComboBox1_Change()
      MsgBox formular1.cbo_Name.ListIndex
      End Sub

Alternative Methoden

  • ListBox verwenden: Anstelle einer Combobox könntest du eine ListBox verwenden, um mehrere Spalten anzuzeigen. Setze die Breite der ersten Spalte auf 0, um nur die zweite Spalte sichtbar zu machen.

  • Formularsteuerelemente: In Access gibt es auch die Möglichkeit, ein Kombinationsfeld zu verwenden, um mehrere Spalten anzuzeigen. Diese Methode könnte ebenfalls hilfreich sein.


Praktische Beispiele

  • Beispiel für das Befüllen einer Combobox mit Personalnummern und Namen:

    For i = 1 To tab_name.Cells(1, 2).End(xlDown).Row
       With formular1.cbo_Name
           .AddItem
           .List(.ListCount - 1, 0) = tab_name.Cells(i, 3) ' Personalnummer
           .List(.ListCount - 1, 1) = tab_name.Cells(i, 2) ' Name
       End With
    Next i
  • Beispiel für die Verwendung des ListIndex:

    Private Sub ComboBox1_Change()
       Dim selectedRow As Integer
       selectedRow = formular1.cbo_Name.ListIndex
       MsgBox "Ausgewählte Personalnummer: " & formular1.cbo_Name.List(selectedRow, 0)
    End Sub

Tipps für Profis

  • Verwendung von ItemData: Du kannst auch ItemData verwenden, um die Personalnummer direkt zu speichern und nur den Namen anzuzeigen. Dies kann die Benutzererfahrung verbessern.

  • Datenvalidierung: Implementiere eine Datenvalidierung, um sicherzustellen, dass nur gültige Personalnummern ausgewählt werden können.

  • Kombination mit anderen Steuerelementen: Kombiniere die Combobox mit anderen Steuerelementen, um ein interaktives Benutzerformular zu erstellen.


FAQ: Häufige Fragen

1. Kann ich in einer Combobox mehrere Spalten gleichzeitig anzeigen? Nein, in einer Standard-Combobox kannst du nur eine Spalte anzeigen. Du kannst jedoch die TextColumn-Eigenschaft nutzen, um die gewünschte Spalte sichtbar zu machen.

2. Was ist der Unterschied zwischen einer Combobox und einer ListBox? Eine Combobox zeigt standardmäßig nur einen Eintrag an, während eine ListBox mehrere Einträge anzeigen kann. In einer ListBox kannst du auch mehrere Spalten anzeigen lassen, indem du die Breite der Spalten anpasst.

3. Wie kann ich die Auswahl durch die Personalnummer treffen? Du kannst die Personalnummer in der ersten Spalte der Combobox speichern und die TextColumn-Eigenschaft verwenden, um den Namen anzuzeigen.

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