Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ControlSource für ComboBox

Forumthread: ControlSource für ComboBox

ControlSource für ComboBox
21.08.2003 14:30:50
Udo
Hallo,
Wie kann ich es hinbekommen, dass die Anzeige in meiner ComboBox aus dem Inhalt bestimmter Zellen generiert wird ?
Mein bisheriger Code:
Dim AAende As Long
' letzte Zeile in den Spalten AA feststellen
If [AA65536] = "" Then
AAende = [AA65536].End(xlUp).Row
Else
AAende = 65536
End If
' ControlSource der ComboBox2 zuteilen
ComboBox2.AddItem Range("AA1:AA" & AAende)
Leider bekomme ich bei diesem Code immer die Fehlermeldung "Laufzeitfehler 424, Objekt erforderlich".
Bin für jeden Hinweis dankbar.
Udo
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ControlSource für ComboBox
21.08.2003 14:36:40
Ingo
Bei der Methode Add Item müsstest du in einer Schleife nacheinander alle zellinhalte der Spalte AA durchlaufen. es geht aber auch anders.
Wenn die ComboBox in einem Tabellenblatt ist
lautet der Code:
ComboBox2.ListFillRange =("AA1:AA" & AAende)
oder das gleiche in einer UserForm:
ComboBox2.ControlSource=("AA1:AA" & AAende)

Anzeige
AW: ControlSource für ComboBox
21.08.2003 14:42:59
K.Rola
Hallo,
ich denke mal, es geht um RowSource, nicht Control Source?
ControlSource kann immer nur eine einzelne Zelle sein.
Gruß K.Rola

AW: ControlSource für ComboBox
21.08.2003 14:45:10
Udo
Hallo Ingo,
leider bekomme ich immer noch die Fehlermeldung .
Die comboBox ist in einer Userform. Die zweite Combobox wird erst durch Auswahl in der ersten Combobox geladen. Hier mein kompletter Code:

Private Sub UserForm_Initialize()
ComboBox2.Visible = False
ComboBox3.Visible = False
TextBox1.Visible = False
CheckBox1.Visible = False
CheckBox2.Visible = False
Label2.Visible = False
Label3.Visible = False
Label4.Visible = False
TextBox1.Value = CDate(Date)
For i = 2 To Worksheets.Count
ComboBox1.AddItem Worksheets(i).Name
Next i
End Sub


Private Sub ComboBox1_Click()
Worksheets(ComboBox1.Value).Visible = True
Worksheets(ComboBox1.Value).Activate
Worksheets(1).Visible = False
ComboBox2.Visible = True
Label2.Visible = True
ComboBox1.Enabled = False
Label1.Enabled = False
Call Felder_für_Auswahl_kopieren
Call letzte_zeile_aus_AA
End Sub

Public Sub letzte_zeile_aus_AA()
Dim AAende As Long
' letzte Zeile in den Spalten AA feststellen
If [AA65536] = "" Then
AAende = [AA65536].End(xlUp).Row
Else
AAende = 65536
End If
' ControlSource der ComboBox2 zuteilen
ComboBox2.ControlSource = ("AA1:AA" & AAende)
End Sub

Gruß
Udo

Anzeige
AW: ControlSource für ComboBox
21.08.2003 15:01:09
Ingo
Entschukdigung!
Es muß heißen:
ComboBox2.RowSource=Blattname.Range("AA1:AA" & AAende).Address

AW: ControlSource für ComboBox
21.08.2003 15:08:10
Udo
Hallo Ingo,
der Blattname ist leider dynamisch. Er wird erst in der Auswahl der ersten Combobox erfragt.
Habe folgende neuen Code ausbrobiert:
ComboBox2.RowSource = Worksheets(ComboBox1.Value).Range("AA1:AA" & AAende).Address
ComboBox2.RowSource = ActiveSheet.Range("AA1:AA" & AAende).Address
Gibt es trotzdem eine Möglichkeit das hinzubekommen?
Gruß
Udo

Anzeige
AW: hallo
21.08.2003 15:02:06
Udo
.. kann mir jemand helfen ?
Gruß
Udo

AW: hallo
21.08.2003 15:31:14
Ingo
Wenn der Blattname durch Auswahl in der ComboBox1 festgelegt wird, kannst du doch einer Variable den ComboBox.Text oder Value übergeben und den wert der Variablen Anstelle des Blattnamen einsetzen. Also etwa so
Dim tbl as string
tbl = Combox1.text
ComboBox2.RowSource=Sheets(tbl).Range("AA1:AA" & AAende).Address

Anzeige
Danke
21.08.2003 15:39:35
Udo
Hallo Ingo,
jetzt klappt es. Danke.
Gruß
Udo

;
Anzeige

Infobox / Tutorial

ControlSource für ComboBox in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine ComboBox in Excel VBA mit Daten aus bestimmten Zellen zu füllen, kannst du die folgende Schritt-für-Schritt-Anleitung nutzen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge eine UserForm hinzu: Klicke auf Einfügen > UserForm.

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

  4. Füge den benötigten Code ein: Verwende den folgenden Code in der UserForm:

    Private Sub UserForm_Initialize()
       Dim AAende As Long
       ' Letzte Zeile in den Spalten AA feststellen
       If [AA65536] = "" Then
           AAende = [AA65536].End(xlUp).Row
       Else
           AAende = 65536
       End If
       ' Setze die RowSource der ComboBox
       ComboBox2.RowSource = Worksheets("DeinBlattname").Range("AA1:AA" & AAende).Address
    End Sub
  5. Führe die UserForm aus und überprüfe, ob die ComboBox korrekt mit den Daten gefüllt wird.


Häufige Fehler und Lösungen

Wenn du beim Arbeiten mit der ComboBox auf Probleme stößt, könnten die folgenden Fehler und deren Lösungen hilfreich sein:

  • Fehlermeldung "Laufzeitfehler 424, Objekt erforderlich":

    • Stelle sicher, dass du den richtigen Namen der ComboBox verwendest, z.B. ComboBox2.
    • Überprüfe, ob die ComboBox wirklich auf der UserForm vorhanden ist.
  • Daten erscheinen nicht in der ComboBox:

    • Vergewissere dich, dass der Blattname korrekt ist und dass die Range, die du angibst, gültig ist.
    • Nutze die RowSource-Eigenschaft anstelle von ControlSource, da ControlSource nur für eine einzelne Zelle verwendet werden kann.

Alternative Methoden

Es gibt mehrere Möglichkeiten, eine ComboBox in Excel VBA zu befüllen:

  1. Direkte Zuweisung mit AddItem:

    For i = 1 To AAende
       ComboBox2.AddItem Worksheets("DeinBlattname").Cells(i, 27).Value ' 27 ist die Spalte AA
    Next i
  2. Verwendung von ListFillRange:

    • Wenn die ComboBox in einem Arbeitsblatt ist, kannst du ListFillRange verwenden:
      ComboBox2.ListFillRange = "AA1:AA" & AAende

Praktische Beispiele

Hier ist ein Beispiel, wie du die ComboBox in einer UserForm dynamisch befüllen kannst:

Private Sub ComboBox1_Click()
    Dim tbl As String
    tbl = ComboBox1.Text
    ComboBox2.RowSource = Sheets(tbl).Range("AA1:AA" & AAende).Address
    ComboBox2.Visible = True
End Sub

In diesem Beispiel wird die RowSource der zweiten ComboBox auf den Bereich der ersten ComboBox gesetzt, was eine dynamische Auswahl ermöglicht.


Tipps für Profis

  • Verwende Option Explicit: Dies hilft dir, Fehler bei der Variablendeklaration frühzeitig zu erkennen.
  • Vermeide magische Zahlen: Nutze Konstanten oder Variablen anstelle von direkten Zahlenwerten (z.B. 27 für die Spalte AA).
  • Dokumentiere deinen Code: Schreibe Kommentare, um den Zweck jeder Funktion zu erklären. Das erleichtert die Wartung.

FAQ: Häufige Fragen

1. Wie kann ich die ComboBox mit Daten aus einer anderen Arbeitsmappe füllen? Du kannst den vollständigen Pfad zur anderen Arbeitsmappe in der RowSource angeben:

ComboBox2.RowSource = "[DeineArbeitsmappe.xlsx]Blattname!AA1:AA" & AAende

2. Was ist der Unterschied zwischen ControlSource und RowSource? ControlSource wird verwendet, um eine einzelne Zelle zu verknüpfen, während RowSource eine Liste von Werten für die ComboBox bereitstellt.

3. Wie kann ich sicherstellen, dass die ComboBox nur einzigartige Werte anzeigt? Du kannst ein Dictionary oder eine Sammlung verwenden, um doppelte Werte zu filtern, bevor du sie zur ComboBox hinzufügst.

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