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

Forumthread: ComboBox & 2. Spalte füllen (add / list) ?

ComboBox & 2. Spalte füllen (add / list) ?
17.09.2004 09:34:53
Stefan
Hallo allerseits,
wer kann mir hier weiterhelfen?

Private Sub ComboBox1_GotFocus()
Dim i%
With Sheets("Tabelle1").ComboBox1
.Clear
For i = 5 To Sheets.Count
.AddItem Sheets(i).Name
Next
End With
End Sub

Das Ding liest Tabellennamen in eine ComboBox ein. Diese Tabellen können später mal ausgewählt werden, anhand des Eintrages (also Tabellennamens) in dieser ComboBox.
Jetzt möchte ich aber noch einen Eintrag in die Box hinzufügen. Er soll nicht nur den TabNamen auslesen, sondern auch noch den Wert in der jeweiligen A1-Zelle. Das funktioniert mit 'Sheets(i).Range("A1")'.
Aber ich weiß nicht wie ich das jetzt am besten einbaue. Ich dachte da an eine zweite Spalte (ColumnCount=2), weiß aber halt nicht wie! Hatte das auch schon mit dem verbinden von dem AddItem (.AddItem Sheets(i).Name & Sheets(i).Range("A1")) versucht, aber dann kann ich später nicht mehr die Tabellen übernehmen, klappt also nicht.
Dieser Wert der Zelle A1 soll nur so ne Art Info sein.
Wer hätte da Ideen?
Mfg
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox & 2. Spalte füllen (add / list) ?
tobias
Hallo
probiers mal so:
activesheet.combobox1.additem Sheets(i).Name
activesheet.combobox1.list(1,1) = Sheets(i).Range("A1")
Combobox Eigenschaften:
BoundColumn = 1
ColumnCount = 2
mfg tobias
AW: ComboBox & 2. Spalte füllen (add / list) ?
tobias
Hallo
OK nochmal:

Private Sub ComboBox1_GotFocus()
Dim i%,index as integer
With Sheets("Tabelle1").ComboBox1
.Clear
For i = 5 To Sheets.Count
index = index + 1
.AddItem Sheets(i).Name
.list(index,1) = Sheets(i).Range("A1")
Next
End With
End Sub

mfg tobias
Anzeige
AW: ComboBox & 2. Spalte füllen (add / list) ?
tobias
Hallo
aaaah,da war noch ein Fehler

Private Sub ComboBox1_GotFocus()
Dim i%,index as integer
With Sheets("Tabelle1").ComboBox1
.Clear
For i = 5 To Sheets.Count
.AddItem Sheets(i).Name
.list(index,1) = Sheets(i).Range("A1")
index = index + 1
Next
End With
End Sub

mfg tobias
Anzeige
@Tobias: 1000 Dank, funkt. prima!
Stefan
genauso sollte es sein, danke schön.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ComboBox in Excel VBA effizient nutzen


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel VBA zu füllen und zusätzlich Informationen aus einer zweiten Spalte anzuzeigen, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge eine UserForm hinzu: Klicke mit der rechten Maustaste auf ein Projekt und wähle Einfügen > UserForm.

  3. Füge eine ComboBox hinzu: Ziehe eine ComboBox auf die UserForm aus der Toolbox.

  4. Setze die Eigenschaften der ComboBox:

    • Setze ColumnCount auf 2.
    • Setze BoundColumn auf 1.
  5. Füge den folgenden VBA-Code in das Codefenster der UserForm ein:

    Private Sub ComboBox1_GotFocus()
       Dim i As Integer, index As Integer
       With Me.ComboBox1
           .Clear
           For i = 5 To ThisWorkbook.Sheets.Count
               .AddItem ThisWorkbook.Sheets(i).Name
               .List(index, 1) = ThisWorkbook.Sheets(i).Range("A1")
               index = index + 1
           Next i
       End With
    End Sub
  6. Speichere und teste die UserForm: Du kannst die UserForm nun ausführen, um sicherzustellen, dass die ComboBox korrekt gefüllt wird.


Häufige Fehler und Lösungen

  • Fehler: ComboBox bleibt leer.

    • Lösung: Stelle sicher, dass der Code im richtigen Ereignis (ComboBox1_GotFocus) steht und dass die ColumnCount-Eigenschaft auf 2 gesetzt ist.
  • Fehler: Index-Fehler bei .List(index, 1).

    • Lösung: Stelle sicher, dass der Index vor der Verwendung erhöht wird. Der Code sollte index = index + 1 nach dem Hinzufügen des Items aufrufen.

Alternative Methoden

Wenn du nicht nur mit VBA arbeiten möchtest, kannst du auch die Data Validation-Liste in Excel verwenden, um eine Dropdown-Liste zu erstellen. Diese Methode ist jedoch nicht so flexibel wie die Verwendung von VBA, da sie keine zusätzlichen Informationen in der ComboBox anzeigt.


Praktische Beispiele

  1. Einfaches Füllen der ComboBox:

    Private Sub ComboBox1_GotFocus()
       ComboBox1.AddItem "Option 1"
       ComboBox1.AddItem "Option 2"
    End Sub
  2. Füllen mit Werten aus einer Tabelle: Nehme an, du hast eine Tabelle mit Werten in den ersten zwei Spalten. Du könntest die ComboBox so füllen:

    Private Sub ComboBox1_GotFocus()
       Dim i As Integer
       For i = 1 To 10 ' Beispiel für 10 Zeilen
           ComboBox1.AddItem Cells(i, 1).Value
           ComboBox1.List(i - 1, 1) = Cells(i, 2).Value
       Next i
    End Sub

Tipps für Profis

  • Verwende ComboBox.AddItem effizient: Wenn du viele Elemente hinzufügen musst, kann es effizienter sein, ein Array zu verwenden und die ComboBox in einem Schritt zu füllen.
  • Nutze Events: Verwende andere Events wie ComboBox1_Change, um auf Änderungen in der Auswahl zu reagieren und weitere Informationen anzuzeigen.
  • Gestalte die UserForm ansprechend: Achte darauf, dass deine UserForm benutzerfreundlich ist, indem du klare Labels und eine ansprechende Anordnung verwendest.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox nach der Auswahl eines Items füllen? Um die ComboBox dynamisch zu füllen, kannst du den Code im ComboBox1_Change-Ereignis verwenden, um zusätzliche Informationen zu laden.

2. Welche Excel-Version benötige ich für die Verwendung von ComboBox in VBA? Die beschriebenen Methoden sind in den meisten modernen Versionen von Excel verfügbar, einschließlich Excel 2010, 2013, 2016 und 2019.

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