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

Forumthread: ListBox, Rowsource mit Range füllen

ListBox, Rowsource mit Range füllen
24.04.2019 13:10:31
Michael
Hallo liebe Excel Gemeinde,
ich lese nun schon seit bestimmt 4 Jahren hier im Forum mit und konnte mir immer mit schon bestehenden Beiträgen weiterhelfen. Zu mir, ich nutze VBA hauptsächlich um verschiedene Excel Mappen zu automatisieren, meine VBA Kenntnisse dafür sind eher dürftig würde ich behaupten.
Jetzt ist der Punkt gekommen an dem ich mit Hilfe des Forums und Goo..e nicht mehr weiterkomme. _ Ich möchte mit einer Userform ein Excelfile nach Datumfiltern und die 4 links daneben stehenden Einträge in einer ListBox anzeigen. Dies funktioniert auch mit meinem bisherigen Code, allerdings möchte ich gerne in meinem Code auf Select und Activate verzichten. Könntet ihr mir hierbei helfen ich wäre euch sehr dankbar.

Private Sub UserForm_Activate()
DTPicker1.Value = Now
DTPicker2.Value = Now
Sheets(1).Select
End Sub
Private Sub CommandButton1_Click()
Dim Zelle As Range
Dim Speicher As Range
Dim SpeicherLeer As Range
ActiveSheet.Range("S:S").Select 'Hierdrauf Verzichten
Selection.AutoFilter Field:=1, Criteria1:=">=" & Format_
(DTPicker1, "DD.MM.YYYY"), Operator:=xlAnd _
, Criteria2:="'ohne dieses Activate zeigt mir die
'RowSource die Inhalte von TabellenBlatt1
'an
LtzZeileTabelle2 = Sheets(2).Cells(Rows.Count, 5).End(xlUp).Row
With Me.ListBox1
.ColumnCount = 5        'Anzahl Spalten
.ColumnWidths =("2cm;2cm;2cm;2cm;2cm") 'Spaltenbreiten
.ColumnHeads = True                     'mit Überschrift
.RowSource = Range(Sheets(2).Cells(2, 1), Sheets(2).Cells_
(LtzZeileTabelle2, 5)).Address      'Datenbereich
End With
End If
End With
End Sub

Wenn das File benötigt wird lade ich dieses selbstverständlich auch hoch.
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox, Rowsource mit Range füllen
24.04.2019 13:51:02
Mullit
Hallo,
ungefähr so, aber besser Du nimmst an Stelle der .RowSource die .List-Eigenschaft...
ActiveSheet.Range("S:S").AutoFilter Field:=1, Criteria1:="& _
gt;=" & Format_
       (DTPicker1, "DD.MM.YYYY"), Operator:=xlAnd _
        , Criteria2:="<=" & Format(DTPicker2, "DD.MM.YYYY") .RowSource = Worksheets(2).Range(Worksheets(2).Cells(2, 1), Worksheets(2).Cells_ (LtzZeileTabelle2, 5)).Address(External:=True) 'Datenbereich

Gruß, Mullit
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

ListBox mit Rowsource in Excel VBA füllen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne die Excel-Datei und gehe in den VBA-Editor (Alt + F11). Erstelle eine neue UserForm und füge einen DTPicker und eine ListBox hinzu.

  2. Code für die UserForm: Füge den folgenden Code in das UserForm ein:

    Private Sub UserForm_Activate()
       DTPicker1.Value = Now
       DTPicker2.Value = Now
    End Sub
    
    Private Sub CommandButton1_Click()
       Dim LtzZeileTabelle2 As Long
       LtzZeileTabelle2 = Sheets(2).Cells(Rows.Count, 5).End(xlUp).Row
    
       ' Daten filtern
       Sheets(2).Range("S:S").AutoFilter Field:=1, Criteria1:=">=" & Format(DTPicker1, "DD.MM.YYYY"), _
       Operator:=xlAnd, Criteria2:="<=" & Format(DTPicker2, "DD.MM.YYYY")
    
       ' ListBox füllen
       With Me.ListBox1
           .ColumnCount = 5
           .ColumnWidths = "2cm;2cm;2cm;2cm;2cm"
           .RowSource = Sheets(2).Range(Sheets(2).Cells(2, 1), Sheets(2).Cells(LtzZeileTabelle2, 5)).Address
       End With
    End Sub
  3. Testen: Führe die UserForm aus und teste die Funktionalität, indem du ein Datum in den DTPicker eingibst und den Button klickst.


Häufige Fehler und Lösungen

  • Fehler: ListBox zeigt keine Daten an: Überprüfe, ob der Range korrekt gesetzt ist. Stelle sicher, dass die Filterkriterien im AutoFilter korrekt sind und die Daten vorhanden sind.

  • Aktivieren von Sheets notwendig: Wenn du Sheets(2).Select benötigst, um die ListBox zu befüllen, versuche stattdessen, die .List-Eigenschaft zu verwenden, wie in den Beiträgen von Mullit vorgeschlagen.


Alternative Methoden

  • Verwendung der .List-Eigenschaft: Anstelle der RowSource-Eigenschaft kannst du die .List-Eigenschaft verwenden, um die ListBox mit einem Array zu füllen. Dies vermeidet die Notwendigkeit von RowSource.

    Dim myArray() As Variant
    myArray = Sheets(2).Range("A2:E" & LtzZeileTabelle2).Value
    Me.ListBox1.List = myArray
  • ComboBox mit Range füllen: Du kannst auch eine ComboBox verwenden, um ähnliche Aufgaben zu erledigen. Die Vorgehensweise ist ähnlich, aber die RowSource wird auf die ComboBox angewendet.


Praktische Beispiele

Ein Beispiel zur Verwendung eines Filters in einer Tabelle:

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle2")

    ws.Range("S:S").AutoFilter Field:=1, Criteria1:=">=" & Format(DTPicker1.Value, "DD.MM.YYYY")

    ' Listbox füllen
    Me.ListBox1.RowSource = ws.Range(ws.Cells(2, 1), ws.Cells(ws.Cells(Rows.Count, 1).End(xlUp).Row, 5)).Address
End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung einfügen: Füge eine Fehlerbehandlung in deinen Code ein, um den Nutzer über mögliche Probleme zu informieren.

    On Error GoTo ErrorHandler
    ' Dein Code hier...
    Exit Sub
    ErrorHandler:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich die ListBox automatisch aktualisieren?
Du kannst die ListBox bei jedem Aktivieren der UserForm aktualisieren, indem du den entsprechenden Code in die UserForm_Activate-Sub einfügst.

2. Was mache ich, wenn die Filterkriterien nicht funktionieren?
Überprüfe die Datentypen in deiner Tabelle und stelle sicher, dass die Filterkriterien die richtigen Werte verwenden.

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