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

Forumthread: Listbox füllen nach Wert in Textbox

Listbox füllen nach Wert in Textbox
Volker
Hallo zusammen,
ich möchte eine UF-Listbox füllen.
Es sollen Arbeitsmappen aufgelistet werden welche sich in einem anderen Ordner "C:\OrdnerA\OrdnerB\"
befinden.
Da sich die Namen der Arbeitsmappen in dem Ordner aus einem Namen und einem Datum zusammensetzen
z.B. Meier, 21.05.2011.xls möchte ich nur diejenigen Mappen auflisten, welche ein bestimmtes Datum im Namen
haben.
Hierzu setze ich in Textbox 1 als Vorgabewert - *, - (Sternchen und Komma)
In Textbox2 -21.05.2011-
Textbox3 wird zu TextBox3.Value = TextBox1.Value & TextBox2.Value
Erste Frage: Wird das Sternchen eigentlich als Platzhalter in diesemZusammenhang anerkannt?
Zweite Frage: Wie müsste der Code dafür aussehen um Userform3.Listbox1 mit den gefundenen Arbeitsmappen zu füllen?
Leider ist es mir nicht möglich eine Beispielmappe hochzuladen die Datei ist einfach zu groß.
Ich hoffe Ihr könnt mir trotzdem helfen.
Danke für's lesen.
Gruß
Volker
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Listbox füllen nach Wert in Textbox
22.05.2011 18:18:58
Josef

Hallo Volker,
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************
Option Explicit
Private Sub CommandButton1_Click()
  Dim strFile As String, strPath As String
  ListBox1.Clear
  strPath = "C:\OrdnerA\OrdnerB\"
  strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
  strFile = Dir(strPath & TextBox3 & "*.xls*", vbNormal)
  Do While strFile <> ""
    ListBox1.AddItem strFile
    strFile = Dir
  Loop
End Sub



« Gruß Sepp »

Anzeige
AW: Listbox füllen nach Wert in Textbox
22.05.2011 18:28:30
Volker
Hallo Josef,
Danke für Deine Antwort.
Das ist es.
Schönen Sonntag noch
Danke und Gruß
Volker
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox füllen nach Wert in Textbox


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Anwendung und aktiviere die Entwicklertools, falls diese noch nicht sichtbar sind.
  2. Erstelle eine Userform in Visual Basic for Applications (VBA):
    • Klicke auf "Entwicklertools" > "Visual Basic".
    • Füge eine neue Userform hinzu.
  3. Füge eine Listbox und drei Textboxen zu deiner Userform hinzu:
    • TextBox1 für den Namensteil (z.B. *),
    • TextBox2 für das Datum (z.B. 21.05.2011),
    • TextBox3 für die Kombination.
  4. Füge einen CommandButton hinzu, um die Listbox zu füllen.
  5. Verwende den folgenden VBA-Code, um die Listbox bei einem Klick auf den Button zu füllen:
Private Sub CommandButton1_Click()
    Dim strFile As String, strPath As String
    ListBox1.Clear
    strPath = "C:\OrdnerA\OrdnerB\"
    strPath = IIf(Right(strPath, 1) = "\", strPath, strPath & "\")
    strFile = Dir(strPath & TextBox3 & "*.xls*", vbNormal)

    Do While strFile <> ""
        ListBox1.AddItem strFile
        strFile = Dir
    Loop
End Sub
  1. Setze den Wert von TextBox3 gleich der Kombination aus TextBox1 und TextBox2:
TextBox3.Value = TextBox1.Value & TextBox2.Value
  1. Teste die Userform, um sicherzustellen, dass die Listbox korrekt gefüllt wird.

Häufige Fehler und Lösungen

  • Fehler: Die Listbox bleibt leer.

    • Lösung: Überprüfe den Pfad in strPath und stelle sicher, dass die Dateien existieren und die Filterkriterien korrekt sind.
  • Fehler: Der Code läuft nicht.

    • Lösung: Stelle sicher, dass die Referenzen im VBA-Editor korrekt gesetzt sind und dass die Userform richtig erstellt wurde.

Alternative Methoden

Eine alternative Methode, um eine Listbox zu füllen, ist die Verwendung von Array-Variablen, um die Dateinamen zwischenzuspeichern und dann auf einmal zur Listbox hinzuzufügen. Das kann die Performance verbessern, besonders bei einer großen Anzahl an Dateien.

Dim files() As String
Dim i As Integer
i = 0
strFile = Dir(strPath & TextBox3 & "*.xls*")
Do While strFile <> ""
    ReDim Preserve files(i)
    files(i) = strFile
    i = i + 1
    strFile = Dir
Loop
For j = LBound(files) To UBound(files)
    ListBox1.AddItem files(j)
Next j

Praktische Beispiele

Wenn du die Userform für spezifische Dateinamen nutzen möchtest, kannst du verschiedene Kombinationen in TextBox1 und TextBox2 ausprobieren. Zum Beispiel:

  • TextBox1: Meier,
  • TextBox2: 21.05.2011

Die Listbox wird dann alle Excel-Dateien auflisten, die mit "Meier, 21.05.2011" beginnen.


Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um mögliche Laufzeitfehler abzufangen und die Anwendung stabiler zu gestalten.
  • Optimiere den Code: Verwende Application.ScreenUpdating = False vor dem Füllen der Listbox, um die Performance zu steigern und das Flackern des Bildschirms zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich die Listbox auch mit anderen Dateitypen füllen?
Ja, du kannst die Filterkriterien im Dir-Befehl anpassen, um auch andere Dateitypen, wie .txt oder .csv, anzuzeigen.

2. Wo finde ich die Entwicklertools in Excel?
Die Entwicklertools kannst du unter "Datei" > "Optionen" > "Menüband anpassen" aktivieren. Setze ein Häkchen bei "Entwicklertools".

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige