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

ComboBox ListFillRange flexibel zuweisen

Forumthread: ComboBox ListFillRange flexibel zuweisen

ComboBox ListFillRange flexibel zuweisen
01.08.2006 07:40:13
stefanseevetal
Guten Morgen liebe Excel-Experten!
Ich habe eine Combobox in meinem Tabellenblatt und möchte, dass bei jedem Anklicken der Box der Eingabebereich geprüft und angepasst wird.
Normalerweise kann ich ja den Eingabebereich mit ListFillRange in den Eigenschaften einstellen, aber wie mache ich es, wenn dieser Bereich in der Größe variiert. Ich möchte nämlich nicht einfach einen Bereich vonn Zelle C4 bis C500 vergeben, sondern den Eingabebereich immer auf die Größe der wirklich gefüllten Zellen begrenzen.
Habe gedacht, es würde so oder ähnlich gehen, aber leider funktioniert es nicht:

Private Sub ComboBox3_Click()
Dim letzteZeile As Integer
letzteZeile = Sheets("Eingabebereiche").Cells(Rows.Count, 3).End(xlUp).Row
Sheets("Eingabebereiche").Select
ListFillRange = Range(Cells(4, 3), Cells(letzteZeile, 3))
End Sub

Vielleicht hat ja jemand ne Idee dazu! Wäre toll!
Danke und Gruß,
Stefanseevetal
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 07:45:50
Hans W. Herber
Hallo Stefan,
wie folgt:

Private Sub ComboBox1_GotFocus()
ComboBox1.ListFillRange = Range("A1").CurrentRegion.Address
End Sub

gruss hans
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:03:01
stefanseevetal
Hallo Hans,
vielen Dank für die Antwort! Ich habe die Eingabe an meine Datei angepasst, aber es geht leider nicht:

Private Sub ComboBox3_GotFocus()
ComboBox3.ListFillRange = Range("Eingabebereiche!C4").CurrentRegion.Address
End Sub

Mein Bereich befindet sich im Tabellenblatt "Eingabebereiche" und beginnt in der Spalte C4 bis C?.
Was bewirkt denn bzw. was macht der Befehl .CurrentRegion.Address?
Danke und Gruß,
Stefan
Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:05:52
schauan
Hallo Stefan,
schreibe mal besser ...Sheets("Eingabebereiche").Range("C4")...
Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:13:02
stefanseevetal
Hallo!
Habe jetzt stehen:

Private Sub ComboBox3_GotFocus()
ComboBox3.ListFillRange = Sheets("Eingabebereiche").Range("C4").CurrentRegion.Address
End Sub

Es wirtd nun kein Fehler mehr ausgegeben, aber meine ComboBox ist nun leer. Was kann ich tun?
Danke und Gruß,
Stefanseevetal
Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:21:53
schauan
Hallo Stefan,
sorry, Hans hat ja gerade den halben Hinweis gegeben.
ComboBox3.ListFillRange = "Eingabebereiche!" & Sheets("Eingabebereiche").Range("C4").CurrentRegion.Address
(ungetestet)

Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:10:01
Hans W. Herber
Hallo Stefan,
der Befehl bewirkt, dass bei Aktivierung der ComboBox die Adresse des mit der Ausgangszelle zusammenhängenden Bereiches an die ComboBox als ListFillRange übergeben wird.
Ich habe meine Beispieldatei mal auf den Server gestellt, bitte testen:
https://www.herber.de/bbs/user/35485.xls
gruss hans
Anzeige
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:27:17
stefanseevetal
Hallo Hans,
vielen Dank für die Beispieldatei. Leider funktioniert es aber auch bei Dir nicht, wenn ich die Daten aus einem zweiten Tabellenblatt einlesen möchte.Habe das so versucht (in Deiner Beispieldatei):
Option Explicit

Private Sub ComboBox1_Change()
End Sub


Private Sub ComboBox1_GotFocus()
ComboBox1.ListFillRange = Sheets("Tabelle2").Range("Á1").CurrentRegion.Address
End Sub

Er zieht sich die Daten aber nicht aus der Tabelle2, in den Eigenschaften unter ListFillRange steht weiterhin $A$1:$A$12, ohne "Tabelle2!" davor.
Gruß,
Stefan
Anzeige
Es läuft, super, vielen Dank!
01.08.2006 08:30:12
stefanseevetal
Hab gerade den Beitrag von schauan gelesen! Vielen Dank Euch beiden, nun läuft es!!!
Gruß,
Stefan
AW: ComboBox ListFillRange flexibel zuweisen
01.08.2006 08:31:28
schauan
... ich hoffe doch, dass meine Lösung funlktioniert.
Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

ComboBox ListFillRange flexibel zuweisen


Schritt-für-Schritt-Anleitung

  1. Öffne das Excel-Dokument und gehe zum VBA-Editor (Alt + F11).

  2. Wähle das entsprechende Tabellenblatt aus, in dem sich deine ComboBox befindet.

  3. Füge den folgenden VBA-Code in das Codefenster des entsprechenden Blattes ein:

    Private Sub ComboBox3_GotFocus()
        ComboBox3.ListFillRange = Sheets("Eingabebereiche").Range("C4").CurrentRegion.Address
    End Sub
  4. Speichere die Datei und teste die ComboBox. Sie sollte nun die Werte aus dem angegebenen Bereich dynamisch anpassen.


Häufige Fehler und Lösungen

  • Leere ComboBox: Wenn die ComboBox leer bleibt, überprüfe, ob der Range korrekt ist. Der Befehl CurrentRegion sollte sicherstellen, dass nur die gefüllten Zellen berücksichtigt werden. Stelle sicher, dass in den Zellen unter C4 tatsächlich Daten vorhanden sind.

  • Falsche Adressierung: Wenn du Daten aus einem anderen Tabellenblatt ziehen möchtest, stelle sicher, dass du das Blatt korrekt angibst:

    ComboBox3.ListFillRange = "Eingabebereiche!" & Sheets("Eingabebereiche").Range("C4").CurrentRegion.Address
  • Fehlerhafte VBA-Referenzen: Überprüfe, ob alle Referenzen im VBA-Code korrekt gesetzt sind und ob das Modul die richtige Form hat.


Alternative Methoden

Wenn du eine flexiblere Lösung suchst, kannst du auch eine Datenvalidierung in Excel verwenden, um eine Liste zu erstellen. Diese Methode funktioniert ohne VBA:

  1. Wähle die Zelle aus, in der die Dropdown-Liste erscheinen soll.
  2. Gehe zu Daten > Datenvalidierung.
  3. Wähle Liste aus und gib den Bereich an, z.B. =Eingabebereiche!C4:C500.
  4. Diese Methode ist weniger dynamisch, aber einfach zu implementieren.

Praktische Beispiele

  • Beispiel 1: Wenn du die ComboBox mit einem Bereich von A1 bis A100 in einem weiteren Tabellenblatt füllen möchtest:

    Private Sub ComboBox1_GotFocus()
        ComboBox1.ListFillRange = "Tabelle2!" & Sheets("Tabelle2").Range("A1").CurrentRegion.Address
    End Sub
  • Beispiel 2: Um mehrere ComboBoxen mit verschiedenen Bereichen zu füllen, kannst du ähnliche Code-Snippets für jede ComboBox verwenden, indem du die entsprechenden Zellbereiche anpasst.


Tipps für Profis

  • Verwende Option Explicit: Damit werden alle Variablen deklariert, was hilft, Fehler im Code zu vermeiden.

  • Fehlerbehebung: Nutze den Debugger im VBA-Editor, um Probleme im Code zu identifizieren.

  • Dynamische Listen: Wenn du häufig mit wechselnden Daten arbeitest, überlege, ob du die Tabelle statt eines statischen Bereichs verwendest, da Excel-Tabellen automatisch die Größe anpassen.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ListFillRange und RowSource?
ListFillRange wird verwendet, um die Liste einer ComboBox in VBA zu definieren, während RowSource in der Excel-Oberfläche genutzt wird, um eine Liste für eine Dropdown-Liste festzulegen.

2. Wie kann ich die ComboBox mit einer Liste aus einer anderen Arbeitsmappe füllen?
Du musst den vollständigen Pfad zur anderen Arbeitsmappe angeben und sicherstellen, dass die Arbeitsmappe geöffnet ist, um auf die Daten zugreifen zu können.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, die oben genannten Methoden funktionieren in Excel-Versionen ab 2007. Achte jedoch darauf, dass die Benutzeroberfläche und einige Funktionen sich in älteren Versionen unterscheiden können.

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