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

Forumthread: Vorbelegung ComboBox

Vorbelegung ComboBox
11.10.2016 14:14:04
Rookie
Hallo zusammen,
ich hab da ein kleines Problem und ich finde einfach keine Lösung:
Ich habe eine ComboBox mit Daten aus einer Liste (ListObject) befüllt. Funktioniert auch soweit.
Das Problem ist folgendes:
Ich möchte, dass die Combobox nicht mit dem ersten Eintrag der Liste befüllt wird, sondern mit dem zweiten oder dritten.
Ich habe es mit der Eingenschaft .ListIndex versucht, diese funktioniert aber nur mit 0. Bei 1,2,3 usw. kommt der Fehler "Unglültiger Eigenschaftswert.
Ich hab es auch mit .Text = "String" versucht, aber das funktioniert überhaupt nicht.
Hier der Code:
Private Sub Dropdown(ByVal strDropKategorie As String, ByRef cbo As ComboBox)
'Variablendeklaration
Dim myTable As ListObject
Dim myArray As Variant
Dim TempArray As Variant
Dim x As Long
'Liste auswählen
Set myTable = ThisWorkbook.Worksheets("Listen").ListObjects(strDropKategorie)
'Datenfeld aus Liste erstellen
TempArray = myTable.DataBodyRange
'Liste in horizontale umwandeln
myArray = Application.Transpose(TempArray)
'Datenfeld in Combobox übernehmen
For x = LBound(myArray) To UBound(myArray)
With cbo
.AddItem myArray(x)
.ListIndex = 0

End With
Next x
End Sub
Habt ihr vielleicht ne Idee wie ich die Vorbelegung der ComboBox hier bestimmen kann?
Vielen Dank schon mal für eure Hilfe
Gruß
Stefan
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vorbelegung ComboBox
11.10.2016 14:18:22
Rudi
Hallo,
.Listindex musst du außerhalb der Schleife setzen.
Gruß
Rudi
AW: Vorbelegung ComboBox
11.10.2016 14:42:42
Rookie
Hahahaha....! Ich glaub ich mach für heute schluss.
Vielen Dank Rudi und mit beschämten Grüßen,
Stefan
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Vorbelegung einer ComboBox in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und wechsle zum VBA-Editor (Alt + F11).

  2. Erstelle ein neues Modul oder öffne das bestehende Modul, in dem deine ComboBox definiert ist.

  3. Füge den folgenden Code ein, um die ComboBox mit Werten aus einer Liste zu befüllen und die Vorbelegung festzulegen:

    Private Sub Dropdown(ByVal strDropKategorie As String, ByRef cbo As ComboBox)
       Dim myTable As ListObject
       Dim myArray As Variant
       Dim x As Long
    
       Set myTable = ThisWorkbook.Worksheets("Listen").ListObjects(strDropKategorie)
       myArray = Application.Transpose(myTable.DataBodyRange)
    
       For x = LBound(myArray) To UBound(myArray)
           cbo.AddItem myArray(x)
       Next x
    
       ' Hier wird die Vorbelegung gesetzt
       cbo.ListIndex = 1 ' Setze den Index auf 1 für den zweiten Eintrag
    End Sub
  4. Ändere cbo.ListIndex, um den gewünschten Standardwert festzulegen (0 für den ersten, 1 für den zweiten, usw.).


Häufige Fehler und Lösungen

  • Fehler: Ungültiger Eigenschaftswert

    • Ursache: Du versuchst, den ListIndex innerhalb der Schleife zu setzen.
    • Lösung: Setze den ListIndex nach dem Hinzufügen der Items zur ComboBox, wie im Beispiel gezeigt.
  • Fehler: ComboBox bleibt leer

    • Ursache: Die Datenquelle ist möglicherweise leer oder nicht korrekt referenziert.
    • Lösung: Überprüfe die Namen der Blätter und der ListObjects sowie die Daten in der Quelle.

Alternative Methoden

  • Du kannst auch die ComboBox manuell im Excel-Blatt erstellen und die Werte über VBA zuweisen. Dies ermöglicht eine einfachere Anpassung, ohne die ListObject-Funktion zu verwenden.

  • Eine andere Methode ist die Verwendung von Arrays, um die Werte zu speichern und diese dann in die ComboBox zu laden.


Praktische Beispiele

Hier ist ein Beispiel, wie du eine ComboBox mit festen Werten vorbefüllen kannst:

Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .AddItem "Option 1"
        .AddItem "Option 2"
        .AddItem "Option 3"
        .ListIndex = 0 ' Setzt die Vorauswahl auf "Option 1"
    End With
End Sub

Dieses Beispiel setzt die Vorauswahl auf "Option 1". Du kannst den ListIndex ändern, um eine andere Vorauswahl zu treffen.


Tipps für Profis

  • Verwende cbo.Clear bevor du neue Elemente hinzufügst, um sicherzustellen, dass die ComboBox keine alten Daten anzeigt.
  • Experimentiere mit der VBA ComboBox in UserForms, um erweiterte Funktionen zu nutzen.
  • Nutze die VBA ComboBox Werte vorgeben, um dynamische Datenquellen zu integrieren, die sich je nach Benutzerinteraktion ändern.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox mit Werten aus mehreren Spalten befüllen?
Du kannst die Werte aus mehreren Spalten aus der Liste ziehen und diese in die ComboBox einfügen, indem du die Werte in einer Schleife kombinierst.

2. Was ist der Unterschied zwischen ListIndex und Text?
ListIndex gibt den Index des aktuell ausgewählten Elements an, während Text den sichtbaren Text der ComboBox darstellt. Verwende ListIndex, um eine Vorauswahl zu treffen.

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