Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Combobox 2.Spalte auslesen

Combobox 2.Spalte auslesen
04.11.2013 17:23:11
Maren
Servus allerseits,
soeben habe ich das Problem dank Hilfe für eine 2Spaltige ComboBox gelöst. Wie erreiche ich nun, dass die Werte der 2. Spalten ausgeliefert werden? Lieben Dank für Hilfe
With Box1a
.ColumnCount = 2
.Style = fmStyleDropDownCombobox
.Clear
For i = 2 To LoLetzte
.AddItem ""
.List(.ListCount - 1, 1) = Worksheets("Materialien").Cells(i, 2)
.List(.ListCount - 1, 0) = Worksheets("Materialien").Cells(i, 1)
Next i
End With

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox 2.Spalte auslesen
04.11.2013 17:54:48
Daniel
Hi
die BoundColumn-Eigenschaft auf 2 setzen (hier beginnt die Spalteninizierung mit 1)
dann wirt bei Box1a.Value der Text der zweiten Spalte als Ergebnis verwendet.
oder direkt abfragen:
Box1a.List(Box1a.ListIndex, 1) (hier beginnt die Spaltenindizierung mit 0)
Gruß Daniel

Anzeige
Link zum 1. Beitrag
04.11.2013 20:18:15
Matthias
Hallo
und warum ein neuer Beitrag
Hättest doch hier bleiben können:
https://www.herber.de/forum/messages/1337024.html
Außerdem hast Du den Code nicht 1:1 übernommen, ich denke er hat so gut funktioniert und Dein Chef wird begeistert sein.
erst:
.Style = fmStyleDropDownCombo
jetzt:
.Style = fmStyleDropDownCombobox ?
und warum heißt es plötzlich
With Box1a wo es doch vorher
With cBox war?
Das ist nicht gerade besonders schön, wenn jemand Dein Problem nachgebaut hat um Dir zu helfen
und plötzlich heißen die Objekte anders.
Was Du tust ist zwar Deine Sache aber in manchen Fällen ist diese Art dem Zweck undienlich.
Das soll auch keine Kritik sein (oder ein bisschen doch)
Nimms einfach als gut gemeinten Hinweis ;-)
Gruß Matthias

Anzeige
AW: Link zum 1. Beitrag
05.11.2013 10:27:04
Maen
Danke für die Antworten und auch für die kein-bisschen-Kritik. : )
Habe das zwecks übersicht umgeändert (insgesamt sind es 28 ComboBox)und außerdem copy&paste vermieden. Irgendwann muss ich es ja versuchen selbst hinzubekommen um auch mal helfen zu können : )
BoundColoumn = 2 Funktioniert in sofern, dass der Wert der 2.Spalte in meinem Excel-Sheet ausgegeben wird, aber nicht in der Userform. Das ist ungeschickt weil die erste Spalte eigentlich nur der übersichtshalber da ist (Quasi Menüführung). ListIndex sagt er mir das Index des Eigenschaftsfelds ungültig ist...
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

ComboBox in Excel: 2. Spalte auslesen und verwenden


Schritt-für-Schritt-Anleitung

Um die Werte der 2. Spalte aus einer ComboBox in Excel auszulesen, befolge die folgenden Schritte:

  1. ComboBox erstellen: Füge eine ComboBox zu deiner UserForm hinzu.
  2. Spaltenanzahl festlegen: Stelle sicher, dass die ColumnCount-Eigenschaft auf 2 gesetzt ist.
    With Box1a
       .ColumnCount = 2
       .Style = fmStyleDropDownComboBox
       .Clear
    End With
  3. Daten laden: Füge die Daten aus deinem Excel-Arbeitsblatt in die ComboBox ein.
    For i = 2 To LoLetzte
       .AddItem ""
       .List(.ListCount - 1, 1) = Worksheets("Materialien").Cells(i, 2)
       .List(.ListCount - 1, 0) = Worksheets("Materialien").Cells(i, 1)
    Next i
  4. BoundColumn-Eigenschaft setzen: Setze die BoundColumn-Eigenschaft der ComboBox auf 2.
    Box1a.BoundColumn = 2
  5. Wert abfragen: Um den Wert der 2. Spalte auszulesen, kannst du den Wert direkt abfragen:
    MsgBox Box1a.List(Box1a.ListIndex, 1)

Häufige Fehler und Lösungen

  • Fehler: "Index des Eigenschaftsfelds ungültig"
    Dieser Fehler tritt auf, wenn der ListIndex nicht gesetzt ist oder die Liste leer ist. Stelle sicher, dass du zuerst ein Element aus der ComboBox auswählst.

  • Problem: Wert wird nicht in der UserForm angezeigt
    Wenn der Wert der 2. Spalte nicht korrekt angezeigt wird, überprüfe, ob die BoundColumn-Eigenschaft korrekt auf 2 gesetzt ist.


Alternative Methoden

Eine andere Möglichkeit, um die Werte der 2. Spalte auszulesen, ist die Verwendung von List-Eigenschaft:

Dim zweiterWert As String
zweiterWert = Box1a.List(Box1a.ListIndex, 1)

Diese Methode ist nützlich, wenn du den Wert der zweiten Spalte ohne die BoundColumn-Eigenschaft auslesen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die ComboBox implementieren kannst:

Private Sub UserForm_Initialize()
    With Box1a
        .ColumnCount = 2
        .AddItem "Item 1"
        .List(.ListCount - 1, 1) = "Wert 1"
        .AddItem "Item 2"
        .List(.ListCount - 1, 1) = "Wert 2"
    End With
End Sub

Private Sub CommandButton1_Click()
    MsgBox "Ausgewählter Wert: " & Box1a.List(Box1a.ListIndex, 1)
End Sub

Tipps für Profis

  • Verwende die ListIndex-Eigenschaft: Mit der ListIndex-Eigenschaft kannst du einfach auf den aktuell ausgewählten Wert zugreifen.
  • Datenvalidierung: Achte darauf, dass die Daten, die du in die ComboBox einfügst, korrekt formatiert sind, um Laufzeitfehler zu vermeiden.
  • Vermeide Copy & Paste: Anstatt Code zu kopieren, versuche, die Logik selbst zu verstehen und umzusetzen. So kannst du besser auf Probleme eingehen, wenn sie auftreten.

FAQ: Häufige Fragen

1. Frage
Wie stelle ich sicher, dass die ComboBox immer die richtige Anzahl an Spalten hat?
Antwort: Setze die ColumnCount-Eigenschaft direkt nach dem Erstellen der ComboBox.

2. Frage
Kann ich die ComboBox auch in einer Tabelle verwenden?
Antwort: Ja, du kannst ComboBoxes in Excel-Tabellen verwenden, allerdings ist die Implementierung etwas anders, und du musst den Bezug auf die Tabelle korrekt setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige