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

Forumthread: Combobox aus Tabelle

Combobox aus Tabelle
09.02.2017 19:24:19
Marc
Hallo zsm,
kann mir jemand erklären wieso die combobox nicht gefüllt wird?
nach comborng steigt er aus.
Laufzeitfehler 5 - Ungültige Proz.Aufruf oder Argument
Über Hilfe freu ich mich :)
Danke und Gruß Marc

Sub fuellen()
Dim wks As Worksheet
Dim comborng As Range
Set wks = Workbooks("test.xlsm").Sheets("tbl")
comborng = wks.ListObjects("tbl").Range("tbl[Datum]")
Me.ComboDate.RowSource = comborng
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Combobox aus Tabelle
09.02.2017 20:33:27
Werner
Hallo Marc,
ein Range Objekt wird mit Set zugewiesen.
Bei der Zuweisung zu RowSource bin ich mir nicht sicher. Ich meine es müsste mit .Address versehen werden. Mußt du mal probieren.
Sub fuellen()
Dim wks As Worksheet
Dim comborng As Range
Set wks = Workbooks("test.xlsm").Sheets("tbl")
set comborng = wks.ListObjects("tbl").Range("tbl[Datum]")
Me.ComboDate.RowSource = comborng.address
End Sub
Gruß Werner
Anzeige
AW: Combobox aus Tabelle
09.02.2017 20:42:07
Luschi
Hallo Marc,
bei mir klappt das so (einschließlich Praxistest)

Sub fuellen()
Dim wks As Worksheet
Dim comborng As Range
Set wks = ThisWorkbook.Sheets("tbl")
Set comborng = wks.ListObjects("tbl").DataBodyRange.Columns(1)
With comborng
'die Eigenschaft 'RowSource' gibt es nicht bei der ActiveX-Combobox
Me.ComboDate.ListFillRange = .Parent.Name & "!" & .Address
End With
Set wks = Nothing
Set comborng = Nothing
End Sub
Dabei hat die Tabelle den Namen 'tbl', das ListObjekt (formatierte Tabelle) auch
den Namen 'tbl' die ActiveX-Combobox den Namen 'ComboDate' (jeweils ohne Hohchkomma).
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Combobox aus Tabelle
09.02.2017 20:55:36
Marc
Hallo Luschi,
also dein Code läuft, jedoch nur mit Rowsource anstatt der Listfillrange
Die .Listfillrange steht bei mir nicht zur verfügung
Vielen Dank euch für die Unterstützung!
Sub fuellen()
Dim wks As Worksheet
Dim comborng As Range
Set wks = ThisWorkbook.Sheets("tbl")
Set comborng = wks.ListObjects("tbl").DataBodyRange.Columns(1)
With comborng
'ListfillRange steht nicht zur Verfügung - ich arbeite mit O365-2016, deshalb  _
Vielleicht?
Me.ComboDate.Rowsource = .Parent.Name & "!" & .Address
End With
Set wks = Nothing
Set comborng = Nothing
End Sub

Anzeige
AW: Combobox aus Tabelle
09.02.2017 21:21:49
Luschi
Hallo Marc,
erkläre nun doch mal genau, wo sich die Combobox befindet:
- im Userformular
- als Combobox-Formularsteuerelement im Tabellenblatt
. oder als Combobox-ActiveX-Steuerelement im Tabellenblatt
Mein Code funktioniert für die 3. Variante. Übrigens kannst Du statt

With comborng
'die Eigenschaft 'RowSource' gibt es nicht bei der ActiveX-Combobox
Me.ComboDate.ListFillRange = .Parent.Name & "!" & .Address
End With
auch nur

Me.ComboDate.ListFillRange = comborng.Address(External:=True)
schreiben.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Combobox aus Tabelle
09.02.2017 20:46:37
Marc
Hallo Werner,
leider bekomm ich so die gleiche Fehlermeldung auch wenn ich External mit angebe.
Und ich dachte das arbeiten mit Tabellen macht es einem einfacher :D
AW: .address(external:=True) o.T.
09.02.2017 20:38:31
Gerd
Gruß Gerd
Hatte ich versucht, ohne Erfolg. Danke Gruß EOM
09.02.2017 20:57:50
Marc
Anzeige
AW: Combobox aus Tabelle
09.02.2017 20:57:09
Gerd
Hallo Marc,
wofür soll .Range("tbl[Datum]") stehen?
M.E. ist es ein Fehler, Tabelle u. Tabellchen den selben Namen zu geben.
Wie man auf eine Listobject-Spalte sauber referenziert, hat dir Luschi gezeigt.
Gruß Gerd
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Combobox aus Tabelle in Excel erstellen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und stelle sicher, dass die Tabelle, aus der du die Daten für die Combobox beziehen möchtest, korrekt benannt ist.

  2. Füge eine ActiveX-Combobox hinzu:

    • Gehe zu „Entwicklertools“ > „Einfügen“ > „ActiveX-Steuerelemente“ und wähle die Combobox aus.
  3. Verwende den folgenden VBA-Code in dem Code-Editor, um die Combobox mit Daten zu füllen:

    Sub fuellen()
       Dim wks As Worksheet
       Dim comborng As Range
       Set wks = ThisWorkbook.Sheets("tbl")
       Set comborng = wks.ListObjects("tbl").DataBodyRange.Columns(1)
       Me.ComboDate.ListFillRange = comborng.Address(External:=True)
       Set wks = Nothing
       Set comborng = Nothing
    End Sub
  4. Stelle sicher, dass du die ActiveX-Combobox richtig referenzierst. Wenn du eine Fehlermeldung erhältst, überprüfe, ob die Tabelle den richtigen Namen hat und ob die Referenzen korrekt gesetzt sind.


Häufige Fehler und Lösungen

  • Laufzeitfehler 5 - Ungültiger Prozeduraufruf oder Argument:

    • Überprüfe, ob du das Range-Objekt mit Set zugewiesen hast. Beispiel:
      Set comborng = wks.ListObjects("tbl").Range("tbl[Datum]")
  • ListFillRange steht nicht zur Verfügung:

    • Stelle sicher, dass du eine ActiveX-Combobox verwendest. Die ListFillRange-Eigenschaft funktioniert nicht bei Formularsteuerelementen.
  • Fehlermeldung trotz .Address(External:=True):

    • Überprüfe die Tabellennamen und die Struktur deiner Excel-Datei. Achte darauf, dass es keine Namenskonflikte gibt.

Alternative Methoden

Wenn du Probleme mit der ActiveX-Combobox hast, kannst du auch eine Formularsteuerelement-Combobox verwenden. Der Code sieht ähnlich aus, jedoch verwendest du RowSource anstelle von ListFillRange:

Sub fuellen()
    Dim wks As Worksheet
    Dim comborng As Range
    Set wks = ThisWorkbook.Sheets("tbl")
    Set comborng = wks.ListObjects("tbl").DataBodyRange.Columns(1)
    Me.ComboDate.RowSource = comborng.Address
    Set wks = Nothing
    Set comborng = Nothing
End Sub

Praktische Beispiele

Beispiel 1: Fülle eine Combobox mit Daten aus einer Tabelle:

Sub fuellen()
    Dim wks As Worksheet
    Dim comborng As Range
    Set wks = ThisWorkbook.Sheets("tbl")
    Set comborng = wks.ListObjects("tbl").DataBodyRange.Columns(1)
    Me.ComboDate.ListFillRange = .Parent.Name & "!" & .Address
End Sub

Beispiel 2: Fehlerbehebung bei Laufzeitfehlern:

Sub fuellen()
    On Error Resume Next
    ' Dein Code hier
    If Err.Number <> 0 Then
        MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    End If
    On Error GoTo 0
End Sub

Tipps für Profis

  • Verwende die Immediate-Fenster in der VBA-Entwicklungsumgebung, um Variablen zu debuggen und Werte zu überprüfen.
  • Nutze Kommentare im Code, um die Logik hinter den einzelnen Schritten zu erklären.
  • Halte deine Excel-Version aktuell, um sicherzustellen, dass alle Funktionen und Eigenschaften verfügbar sind.

FAQ: Häufige Fragen

1. Wie kann ich herausfinden, ob ich eine ActiveX- oder Formularsteuerelement-Combobox habe?
Du kannst dies überprüfen, indem du mit der rechten Maustaste auf die Combobox klickst. Wenn du „Eigenschaften“ siehst, handelt es sich um eine ActiveX-Combobox. Andernfalls ist es ein Formularsteuerelement.

2. Warum funktioniert die .ListFillRange-Eigenschaft nicht?
Diese Eigenschaft ist nur für ActiveX-Comboboxen verfügbar. Wenn du eine Formularsteuerelement-Combobox verwendest, musst du die RowSource-Eigenschaft nutzen.

3. Was mache ich, wenn die Tabelle nicht gefunden wird?
Stelle sicher, dass die Tabelle existiert und dass der Name korrekt eingegeben wurde. Überprüfe auch, ob die Tabelle im richtigen Arbeitsblatt ist.

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