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

Forumthread: Listbox mit Daten aus anderer Datei füllen

Listbox mit Daten aus anderer Datei füllen
17.01.2018 11:06:57
Christian
Hallo zusammen,
ich habe in einem Userform eine Listbox, die ich aktuell befüllen kann.
Der Code läuft schnell und sauber durch:
    Dim rngcellbooking As Range
Dim booking As String
With Tabelle1.Range("A1:A1000")
UserForm4.ListBox1.Clear
Set rngcellbooking = .Find(UserForm1.TextBox1)
If Not rngcellbooking Is Nothing Then
booking = rngcellbooking.Address
Do
With UserForm4.ListBox1
.ColumnCount = 5
.AddItem
.List(.ListCount - 1, 0) = rngcellbooking.Value
.List(.ListCount - 1, 1) = rngcellbooking.Offset(0, 1).Value
.List(.ListCount - 1, 2) = rngcellbooking.Offset(0, 2).Value
.List(.ListCount - 1, 3) = rngcellbooking.Offset(0, 3).Value
.List(.ListCount - 1, 4) = rngcellbooking.Offset(0, 4).Value
End With
Set rngcellbooking = .FindNext(rngcellbooking)
Loop While Not rngcellbooking Is Nothing And rngcellbooking.Address  booking
End If
End With
Jetzt soll genau diese Sequenze aber eine andere Datei C:\User\Test.xlsx prüfen. Geht das überhaupt?
VG,
Chris
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit Daten aus anderer Datei füllen
17.01.2018 12:48:40
Rudi
Hallo,
wenn die Datei geöffnet ist:
With worksheets("test.xlsx").Tabelle1.Range("A1:A1000")
Gruß
Rudi
AW: Listbox mit Daten aus anderer Datei füllen
17.01.2018 13:03:33
Christian
Hi Rudi,
die Varinate hatte ich auch bereits, hilft aber nicht.
Hab es nochmal etwas umgestellt, hilft aber auch nicht:
Dim Arr() As Variant
Dim rngcellbooking As Range
Dim Search As String
Dim booking As String
UserForm4.ListBox1.Clear
Search = UserForm1.TextBox1
Workbooks.Open Filename:="C:\Users\Viamonda\Dropbox (Viamonda GmbH)\Team-Ordner „Viamonda GmbH“\ _
Viamonda\ViaNet\Data\Buchungen.xlsx"
With Worksheets("Buchungen.xlsx").Tabelle1.Range("A1:A1000")
Set rngcellbooking = .Find(Search)
If Not rngcellbooking Is Nothing Then
booking = rngcellbooking.Address
Do
With UserForm4.ListBox1
.ColumnCount = 5
.AddItem
.List(.ListCount - 1, 0) = rngcellbooking.Value
.List(.ListCount - 1, 1) = rngcellbooking.Offset(0, 1).Value
.List(.ListCount - 1, 2) = rngcellbooking.Offset(0, 2).Value
.List(.ListCount - 1, 3) = rngcellbooking.Offset(0, 3).Value
.List(.ListCount - 1, 4) = rngcellbooking.Offset(0, 4).Value
End With
Set rngcellbooking = .FindNext(rngcellbooking)
Loop While Not rngcellbooking Is Nothing And rngcellbooking.Address  booking
End If
End With
VG,
Chris
Anzeige
AW: Listbox mit Daten aus anderer Datei füllen
17.01.2018 13:07:02
Rudi
Hallo,
mein Fehler.
muss natürlich
With WorkBooks("Buchungen.xlsx").Tabelle1.Range("A1:A1000")
heißen
Korrektur
17.01.2018 13:10:57
Rudi
Hallo,
auf Sheets in anderen Mappen kann man nicht per CodeName zugreifen.
With WorkBooks("Buchungen.xlsx").Sheets("Tabelle1").Range("A1:A1000")
Gruß
Rudi
Anzeige
AW: Korrektur
17.01.2018 14:25:19
Christian
Ach Mensch, jetzt gehts.
Danke Rudi! Made my day.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Listbox mit Daten aus einer anderen Excel-Datei füllen


Schritt-für-Schritt-Anleitung

Um eine Listbox in einem Userform mit Daten aus einer anderen Excel-Datei zu füllen, kannst Du folgendes Vorgehen nutzen:

  1. UserForm erstellen: Stelle sicher, dass Du in Deinem Excel-Dokument ein UserForm erstellt hast, das eine Listbox enthält.
  2. Code hinzufügen: Füge den folgenden VBA-Code in das Code-Modul Deiner UserForm ein:
Dim rngcellbooking As Range
Dim booking As String
UserForm4.ListBox1.Clear
Workbooks.Open Filename:="C:\User\Test.xlsx" ' Stelle sicher, dass der Pfad zur Datei korrekt ist
With Workbooks("Test.xlsx").Sheets("Tabelle1").Range("A1:A1000")
    Set rngcellbooking = .Find(UserForm1.TextBox1)
    If Not rngcellbooking Is Nothing Then
        booking = rngcellbooking.Address
        Do
            With UserForm4.ListBox1
                .ColumnCount = 5
                .AddItem
                .List(.ListCount - 1, 0) = rngcellbooking.Value
                .List(.ListCount - 1, 1) = rngcellbooking.Offset(0, 1).Value
                .List(.ListCount - 1, 2) = rngcellbooking.Offset(0, 2).Value
                .List(.ListCount - 1, 3) = rngcellbooking.Offset(0, 3).Value
                .List(.ListCount - 1, 4) = rngcellbooking.Offset(0, 4).Value
            End With
            Set rngcellbooking = .FindNext(rngcellbooking)
        Loop While Not rngcellbooking Is Nothing And rngcellbooking.Address <> booking
    End If
End With
  1. Datei speichern: Speichere Deine Änderungen und teste das UserForm.

Häufige Fehler und Lösungen

  • Fehler: Datei nicht gefunden: Stelle sicher, dass der Pfad zur Datei korrekt ist. Überprüfe auch, ob die Datei bereits geöffnet ist.

  • Fehler: Ungültiger Arbeitsblattname: Achte darauf, dass der Name des Arbeitsblattes in der geöffneten Datei korrekt ist. Beispiel: Worksheets("Tabelle1").

  • Fehler: Listbox bleibt leer: Überprüfe, ob die Suchvariable (z.B. UserForm1.TextBox1) tatsächlich einen Wert enthält und ob dieser Wert in der angegebenen Range vorhanden ist.


Alternative Methoden

Eine alternative Methode, um Daten in eine Listbox zu laden, ist die Verwendung von Arrays. Du kannst die Daten zuerst in ein Array laden und dann die Listbox befüllen. Das könnte schneller sein, insbesondere bei großen Datenmengen.

Dim Arr() As Variant
Arr = Application.Transpose(Workbooks("Test.xlsx").Sheets("Tabelle1").Range("A1:E1000").Value)
For i = LBound(Arr, 1) To UBound(Arr, 1)
    UserForm4.ListBox1.AddItem Arr(i, 1) ' Beispiel für die erste Spalte
Next i

Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Verwendung einer Listbox zu verdeutlichen:

  1. Daten in Excel: Stelle sicher, dass Deine Excel-Datei Test.xlsx Daten in den Zellen A1 bis E1000 hat.
  2. UserForm und Listbox: Füge eine Listbox in Dein UserForm ein und verwende den oben genannten Code, um die Daten zu laden.
  3. Suchfunktion: Implementiere ein Suchfeld, um die Listbox basierend auf Benutzereingaben zu filtern.

Tipps für Profis

  • Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um unerwartete Probleme besser zu handhaben. Beispiel:
On Error Resume Next
' Dein Code hier
If Err.Number <> 0 Then
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    Err.Clear
End If
  • Performance optimieren: Schalte die Bildschirmaktualisierung während des Ladens der Daten aus, um die Performance zu verbessern:
Application.ScreenUpdating = False
' Dein Code hier
Application.ScreenUpdating = True

FAQ: Häufige Fragen

1. Kann ich eine Listbox aus mehreren Excel-Dateien befüllen?
Ja, Du kannst mehrere Dateien nacheinander öffnen und die Daten in die Listbox einfügen, indem Du denselben Code für jede Datei verwendest.

2. Funktioniert das in jeder Excel-Version?
Der vorgestellte Code ist für Excel 2010 und spätere Versionen geeignet. Achte darauf, dass die VBA-Referenzen korrekt gesetzt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige