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

Combobox: ListFillRange/RowSource Eigenschaft

Forumthread: Combobox: ListFillRange/RowSource Eigenschaft

Combobox: ListFillRange/RowSource Eigenschaft
14.01.2003 12:56:02
Manuel
Hallo Leute!

Ich möchte in einem Makro auf mehrere Comboboxen anderer Exceldateien zugreifen.

Dies mache ich beispielsweise mit:

Set oComboBox = oSheet.OLEObjects(sCombobox).Object

Wobei "oComboBox" vom Typ ComboBox ist, "oSheet" eine Variable ist, die auf ein bestimmtes Worksheet zeigt und "sComboBox" eine Stringvariable ist mit dem Namen des zu bearbeitenden ComboBox-Controls.
Mittels der Variable "oComboBox" kann ich ohne weiteres auf Eigenschaften wie "ColumnCount" und "BoundColumn" zugreifen.

ABER:

Trotz dokumentierter Eigenschaften für die Combobox bekomme ich den Laufzeitfehler "438: Objekt unterstützt diese Eigenschaft oder Methode nicht", wenn ich einen der beiden Aufrufe versuche:

oComboBox.ListFillRange = "Parameter!A1:A10"
oComboBox.RowSource = "Parameter!A1:A10"

Ich kann nicht nachvollziehen, warum ich die (dokumentierte) Eigenschaft nicht setzen kann...?!?

Für jeden Hinweise wäre ich sehr dankbar!

LG
Manuel

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: Combobox: ListFillRange/RowSource Eigenschaft
14.01.2003 13:06:31
Bernd Held
Hallo Manuel,

ich habe mit einem Dropdown aus der Symbolleiste Steuerelement-Toolbox keine Problem!

so funktionierts bei mir:

Sub Füllen()
Sheets("Tabelle1").ComboBox1.ListFillRange = "Tabelle1!A1:A10"
End Sub

Viele Grüße
Bernd
MVP für Microsoft Excel
Neue VBA-Bücher, neue FAQs und Makros unter: http://held-office.de


Anzeige
Re: Combobox: ListFillRange/RowSource Eigenschaft
14.01.2003 17:31:20
Manuel
Hallo Bernd,

vielen Dank für Deine Antwort!

Allerdings liegt die Problematik darin, dass ich die ComboBox wie in Deinem Beispiel nicht direkt mit Namen ansprechen möchte, sondern diese über ".OLEObjects(strName).Object" ansprechen muss, da ich mehrere Comboboxen in einer Schleife bearbeiten muss und ich den Combobox-Namen nicht "hartkodiert" verwenden kann.

Dein Beispiel funktioniert bei mir auch, allerdings o.g. Aufgabenstellung nicht.

LG
Manuel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Excel Combobox: ListFillRange und RowSource richtig nutzen


Schritt-für-Schritt-Anleitung

  1. ComboBox erstellen: Öffne Excel und füge eine ComboBox hinzu. Dies kannst Du über die Registerkarte "Entwicklertools" tun, indem Du die Option "Einfügen" wählst und dann die ComboBox aus der ActiveX-Steuerelemente auswählst.

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

  3. Code für die ComboBox: Füge den folgenden Code ein, um die ListFillRange oder RowSource zu setzen:

    Sub FülleComboBox()
       Dim oComboBox As Object
       Set oComboBox = ActiveSheet.OLEObjects("ComboBox1").Object
       oComboBox.ListFillRange = "Tabelle1!A1:A10"
       oComboBox.RowSource = "Tabelle1!A1:A10"
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Daten in der ComboBox zu füllen.


Häufige Fehler und Lösungen

  • Fehler 438: "Objekt unterstützt diese Eigenschaft oder Methode nicht". Dieser Fehler tritt auf, wenn Du versuchst, die ListFillRange oder RowSource für eine ComboBox zu setzen, die nicht korrekt referenziert ist. Stelle sicher, dass Du die ComboBox über OLEObjects korrekt ansprichst.

  • Falsche Range: Überprüfe, ob der Bereich, den Du für ListFillRange oder RowSource angibst, korrekt ist und tatsächlich Daten enthält.


Alternative Methoden

  1. Direkte Zuweisung: Anstatt über OLEObjects auf die ComboBox zuzugreifen, kannst Du auch direkt die ComboBox mit ihrem Namen ansprechen, wenn Du nur eine ComboBox hast:

    Sheets("Tabelle1").ComboBox1.ListFillRange = "A1:A10"
  2. ComboBox aus einer anderen Arbeitsmappe: Wenn Du die ListFillRange einer ComboBox aus einer anderen Excel-Datei setzen möchtest, kannst Du die Datei zunächst öffnen und dann auf den Bereich zugreifen:

    Workbooks("AndereDatei.xlsx").Sheets("Tabelle1").Range("A1:A10").Copy
    ActiveSheet.ComboBox1.ListFillRange = "Tabelle1!A1:A10"

Praktische Beispiele

  • Beispiel 1: Fülle eine ComboBox mit Werten aus einer Liste:

    Sub FülleComboBoxMitWerten()
       Dim oComboBox As Object
       Set oComboBox = ActiveSheet.OLEObjects("ComboBox1").Object
       oComboBox.ListFillRange = "Tabelle1!B1:B10"
    End Sub
  • Beispiel 2: Verwende die RowSource, um eine ComboBox mit Daten zu füllen:

    Sub FülleComboBoxMitRowSource()
       Dim oComboBox As Object
       Set oComboBox = ActiveSheet.OLEObjects("ComboBox1").Object
       oComboBox.RowSource = "Tabelle1!C1:C10"
    End Sub

Tipps für Profis

  • Verwendung von ActiveX: Wenn Du ActiveX-ComboBoxen verwendest, achte darauf, die richtigen Eigenschaften in VBA zu setzen, um die ListFillRange und RowSource korrekt zu definieren.

  • Dynamische Bereiche: Nutze dynamische benannte Bereiche, wenn sich die Daten in Deiner Liste häufig ändern. Dies kannst Du über die Funktion BEREICH.VERSCHIEBEN in Excel tun und dann als ListFillRange verwenden.

  • Fehlerbehandlung: Implementiere eine einfache Fehlerbehandlung in Deinem VBA-Code, um unerwartete Fehler abzufangen:

    On Error Resume Next
    oComboBox.ListFillRange = "Tabelle1!A1:A10"
    If Err.Number <> 0 Then
       MsgBox "Fehler beim Setzen der ListFillRange: " & Err.Description
    End If

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ListFillRange und RowSource?
ListFillRange wird verwendet, um die Elemente einer ComboBox zu füllen, während RowSource die Datenquelle für die ComboBox darstellt.

2. Wie kann ich eine ComboBox aus einer anderen Excel-Datei füllen?
Du kannst die Werte kopieren oder die Range in der anderen Datei direkt referenzieren, solange sie geöffnet ist.

3. Warum funktioniert meine ComboBox nicht, wenn ich sie über OLEObjects anspreche?
Stelle sicher, dass Du die ComboBox korrekt referenzierst und die Excel-Version die Eigenschaften unterstützt, die Du verwenden möchtest.

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