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

Combobox manuell füllen über Range

Forumthread: Combobox manuell füllen über Range

Combobox manuell füllen über Range
08.10.2002 14:37:42
B.Rieger
Hallo an alle Excel-Künstler!

Ich möchte in einem Excel-Tabellenblatt mehrere Listboxes oder Comboboxes verwenden, die alle auf einen Datensatz in einem anderen Excel-Dokument zugreifen.

Jede Box soll aber eine andere Auswahl daraus anbieten. Das möchte ich über Range("A1, A4:A24, A33"). (versuche damit haben immer zu einem Absturz von Excel geführt - mit .AddItem geht es schon)
Die Auswahl soll da fix drinnenstehen und nicht in der Box und nicht in der LinkedCell verändert werden können. Es sollen auch nicht bei jedem Makroaufruf jedesmal wieder die selben Werte in die Liste geschrieben werden.

Könnte mir jemand sagen wie ich das am besten angehe??
D A N K E!!!!!
BR

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Combobox manuell füllen über Range
09.10.2002 00:57:31
r.sch.
HI BR,

ich verstehe Dein Problem nicht so ganz?
Den Inhalt eines Listenfeldes bestimmst Du doch über
- Eigenschaften/ListFillRange
dort schreibst Du z. B.: tabelle2!a1:a10 (dort stehen die Listenelemente)
In die LinkedCell wird dann der Inhalt des selektierten Listenelementes übernommen.

Gruß
Reinhard

Anzeige
Re: Combobox manuell füllen über Range
09.10.2002 11:07:19
B.Rieger
Hallo Reinhard!

Vielen Dank für Deinen Tip! Gibt es da einen Trick, wie man unter Eigenschaften/ListFillRange eine selektive Auswahl trifft (eben a2, a4:a24 und a33)? Ich hab verschiedenes probiert - nichts wurde übernommen es geht nur a2:a33.
Ich hab es eben dann ueber VBA versucht:
Private Sub ListBox1_Click()
With ListBox1
.ListFillRange = Workbooks("Mappe4").Worksheets("Tabelle1").Range("a2, a4:a24, a33")
End With
End Sub

Hier wird auch nichts in die Box geschrieben. Zugegeben - bin noch etwas grün, was die Materie betrifft.
Danke für Tips!
BR

Anzeige
Re: Combobox manuell füllen über Range
09.10.2002 20:20:01
r.sch.
Hi BR,

nicht zusammenhängede Bereiche für ListFillRange geht wohl nicht?
(bin auch nur Anfänger)
Versuchs mal mit der Recherche (xlWebFinder.xla/ s. oben in der Leiste).

Gruß
Reinhard

Umweg
10.10.2002 11:35:41
r.sch.
Hi BR,

ich habe nochmal nachgedacht, nach dem Motto "geht nicht, gibt 's nicht".
Mach doch einfach den Umweg über den folgenden Codeschnipsel

With Tabelle1
.Range("a1:a2,a5:a8,a11").Copy Destination:=.Range("b1")
End With

damit erreichst Du einen zusammenhängenden Bereich ab B1, auf den Du im ListFillRange der Box Bezug nehmen kannst.
(Leider funktioniert der Code nicht innerhalb einer
Private Sub ListBox1_Click()
....
End Sub)
Gruß
Reinhard

Anzeige
;
Anzeige

Infobox / Tutorial

Combobox manuell füllen über Range


Schritt-für-Schritt-Anleitung

Um eine VBA Combobox mit Range füllen zu können, befolge diese Schritte:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge ein UserForm hinzu und platziere eine Combobox auf dem Formular.

  3. Öffne den Code-Editor für das UserForm und füge folgenden Code ein:

    Private Sub UserForm_Initialize()
        Dim rng As Range
        Set rng = Workbooks("Mappe4").Worksheets("Tabelle1").Range("A2, A4:A24, A33")
    
        For Each cell In rng
            Me.ComboBox1.AddItem cell.Value
        Next cell
    End Sub
  4. Schließe den VBA-Editor und teste das UserForm. Die Combobox sollte jetzt mit den Werten aus dem angegebenen Range gefüllt werden.


Häufige Fehler und Lösungen

Hier sind einige häufige Fehler, die beim Füllen einer Excel VBA Combobox list from range auftreten können:

  • Fehler: "Typen unverträglich" bei Range.

    • Lösung: Stelle sicher, dass der Range korrekt definiert ist und nur bestehende Zellen enthält.
  • Fehler: Die Combobox bleibt leer.

    • Lösung: Überprüfe, ob das UserForm korrekt initialisiert wird und der Code im UserForm_Initialize()-Event platziert ist.
  • Fehler: Excel stürzt ab.

    • Lösung: Vermeide nicht zusammenhängende Bereiche. Nutze stattdessen eine Hilfsspalte, um die Werte in einen zusammenhängenden Bereich zu kopieren (siehe Abschnitt Alternative Methoden).

Alternative Methoden

Wenn du nicht mit einer VBA Combobox additem from range arbeiten möchtest, kannst du die ListFillRange-Eigenschaft verwenden. Beachte jedoch, dass nicht zusammenhängende Bereiche nicht direkt verwendet werden können. Hier ist ein Workaround:

  1. Erstelle einen zusammenhängenden Bereich:

    With Tabelle1
        .Range("A1:A2,A5:A8,A11").Copy Destination:=.Range("B1")
    End With
  2. Verwende ListFillRange für die Combobox:

    Me.ComboBox1.ListFillRange = "B1:B5"

Damit kannst du weiterhin die gewünschten Werte in die Combobox einfügen, ohne dass Excel abstürzt.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du eine VBA Listbox range definieren kannst:

  • Beispiel 1: Füllen einer Listbox mit einem Range:

    Private Sub UserForm_Initialize()
        Dim rng As Range
        Set rng = Worksheets("Tabelle1").Range("A1:A10")
    
        Me.ListBox1.List = Application.Transpose(rng.Value)
    End Sub
  • Beispiel 2: Dynamisches Füllen basierend auf einer Auswahl:

    Private Sub ComboBox1_Change()
        Dim rng As Range
        Set rng = Worksheets("Tabelle1").Range("A" & Me.ComboBox1.Value)
    
        Me.ListBox1.List = Application.Transpose(rng.Value)
    End Sub

Diese Methoden helfen dir, die Excel VBA Combobox list from range effizient zu füllen.


Tipps für Profis

  • Nutze die AddItem-Methode, wenn du nur wenige Elemente zur Combobox hinzufügen möchtest, anstatt einen gesamten Range zu verwenden.
  • Halte deinen Code sauber und gut kommentiert, insbesondere wenn du mit mehreren UserForms arbeitest.
  • Teste deinen Code regelmäßig, um Fehler frühzeitig zu erkennen.

FAQ: Häufige Fragen

1. Kann ich eine Combobox mit nicht zusammenhängenden Bereichen füllen?
Nein, du kannst in der ListFillRange-Eigenschaft keine nicht zusammenhängenden Bereiche angeben. Nutze stattdessen eine Hilfsspalte.

2. Wie kann ich die Werte in der Combobox nach dem Initialisieren ändern?
Du kannst die Clear-Methode verwenden, um die Combobox zu leeren, bevor du neue Werte hinzufügst:

Me.ComboBox1.Clear

Verwende diese Anleitung, um erfolgreich eine Combobox oder Listbox in Excel VBA zu füllen und deine Daten effizient zu verwalten.

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