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

Forumthread: Daten für Listbox aus anderem Sheet einlesen

Daten für Listbox aus anderem Sheet einlesen
06.01.2009 21:46:00
Martin
Guten Abend Zusammen
Habe ein paar Fragen:
1.
Kann ich aus einer anderen Tabelle als der activen aber in der gleichen Datei, Daten in eine Listbox einlesen.
Bsp: in Tabelle1 öffne ich eine Userform mit einer Listbox, diese soll aber mit den Daten aus der Tabelle2 Zellen A3:C250 gefüllt werden.
Für eine Zelle in eine Textbox habe ich den Code:
Textbox1.Text = Sheets("Tabelle2").Range("A1").Value
2.
Kann ich, fals das oben klappt, auch aus ausgeblendeten Tabellen Daten auslesen und eintragen?
3.
Somit wäre es möglich verschieden UF's nacheinander zu "schalten" um Daten zusammeln und aufzunehmen und dann am Schluss in ein neues Tabellenblatt ("Ausdruck") zufüllen?
Hoffe mir kann jemand helfen.
Gruss Martin
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
06.01.2009 21:52:33
Daniel
Hi
so wie du das beschrieben hast, sollte es funktionieren, auch bei ausgeblendeten Sheets
wichtig ist halt, daß du bei jedem Zellbezug das Sheet mit angibst und nicht mit Select arbeitest.
Gruß, Daniel
AW: Daten für Listbox aus anderem Sheet einlesen
06.01.2009 22:07:00
Martin
Hallo Daniel
Danke.
Leider hilf mir dies noch nicht so viel weiter. Kannst Du mir nen Code schreiben wie ich in die Listbox die Daten bringe habe schon viel probiert bekomme aber immer Fehlermeldungen von 370 bis 1004...
Habe mal dies versucht geht aber nicht:

Private Sub UserForm_Initialize()
With Worksheets("Kunden")
Lst_Kunden.RowSource = Sheets("Kunden").Cells(3, 0)
'        Lst_Kunden.ColumnCount = 1
End With
End Sub


Danke

Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
06.01.2009 22:19:00
Daniel
Hi
die RowSource-Eigenschaft beschreibt einen String, der den Zellbezug enthält,
dh wenn du einer Listbox Daten aus einer Tabelle über RowSource zuweisen willst, dann sieht der Code dazu so aus, es werden die Daten aus der Tabelle "Kunden" Zelle A1-A10 eingelesen.

Lst_Kunden.RowSource = "'Kunden'!A1:A10"


eine andere Methode Daten einzulesen wäre folgende:


dim i as Long
Lst_Kunden.Clear
For i = 1 to 10
Lst_Kunden.AddItem Sheets("Kunden").Cells(i,1)
Next


Gruß, Daniel
ps: Cells(3,0) geht nicht, der kleinste Möglich Index für Cells() ist 1.
Cells(1,1) ist die Zelle A1

Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
07.01.2009 00:33:00
Martin
Danke Daniel
Genau das hatte ich gesucht
Danke Rainer
Ich möchte mit dieser Datei Offerten erstellen. Dies ist eine sehr komplexe und grosse Aufgabe die wir uns gestellt haben.
Aber ich bin zuversichtlich, dass wir das hin bekommen.
AW: Daten für Listbox aus anderem Sheet einlesen
07.01.2009 00:56:00
Martin
Hallo schon wieder
Wo ist hier das Problem?
Ich glaube der Code sucht im aktuellen sheet die letzte Zeile!!
Wie kann ich diesen Code abändern damit er im Sheet("Kunden") die letzte volle Zeile sucht?

Private Sub UserForm_Initialize()
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(Lst_Kunden.Cells(Rows.Count, 3)), Lst_Kunden.Cells(Rows.Count, 1). _
End(xlUp).Row, Rows.Count)
Lst_Kunden.RowSource = "'Kunden'!A3:A" & LoLetzte
End Sub


Danke

Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
07.01.2009 00:57:00
Martin
Hallo schon wieder
Wo ist hier das Problem?
Ich glaube der Code sucht im aktuellen sheet die letzte Zeile!!
Wie kann ich diesen Code abändern damit er im Sheet("Kunden") die letzte volle Zeile sucht?

Private Sub UserForm_Initialize()
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(Lst_Kunden.Cells(Rows.Count, 3)), Lst_Kunden.Cells(Rows.Count, 1). _
End(xlUp).Row, Rows.Count)
Lst_Kunden.RowSource = "'Kunden'!A3:A" & LoLetzte
End Sub


Danke

Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
07.01.2009 01:17:00
Daniel
Hi
das Problem ist, daß du die verschiedenen Objekte durcheinanderwirfst.
Lst_Kunden ist die Listbox, die hat beim Ermitteln der letzten Zeile nichts verloren, da brauchst du das entsprechende Tabellenblatt Sheets("Kunden"):

LoLetzte = IIf(IsEmpty(Sheets("Kunden").Cells(Rows.Count, 3)), Sheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)


allerdings würde ich hier auf IIF verzichten und die einfachere Variante nehmen:


LoLetzte =Sheets("Kunden").Cells(Rows.Count, 1).End(xlUp).Row


es kommt verdammt selten vor, daß ein Tabellenblatt bis zur letzten Zeile gefüllt ist.
Gruß, Daniel

Anzeige
AW: Daten für Listbox aus anderem Sheet einlesen
07.01.2009 01:23:00
Martin
Danke Daniel
habe gemerkt, dass es jetzt wohl besser ist wenn ich pennen gehe... ;-)
Aber klappt super mit diesem Code.
Danke.
AW: Daten für Listbox aus anderem Sheet einlesen
06.01.2009 22:19:00
Ramses
Hallo
Schau dir mal in der VBA-Online Hilfe unter "AddItem", oder schreib die Quelladresse gleich in die Listbox.
Oder gibt es einen bestimmten Grund warum du sie UNBEDINGT mit VBA füllen willst ?
Gruss Rainer
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Daten für Listbox aus anderem Sheet einlesen


Schritt-für-Schritt-Anleitung

Um eine Listbox in Excel mit Daten aus einem anderen Blatt zu füllen, kannst du die folgenden Schritte befolgen. Dieses Beispiel geht davon aus, dass du Excel mit VBA nutzt.

  1. Userform erstellen:

    • Öffne den VBA-Editor (ALT + F11).
    • Erstelle eine neue Userform, indem du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "UserForm" wählst.
  2. Listbox hinzufügen:

    • Ziehe eine Listbox aus der Toolbox in die Userform.
  3. Code für das Füllen der Listbox:

    • Doppelklicke auf die Userform und füge den folgenden Code in den UserForm_Initialize-Bereich ein:
    Private Sub UserForm_Initialize()
       Dim LoLetzte As Long
       LoLetzte = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
       Lst_Kunden.RowSource = "'Tabelle2'!A3:A" & LoLetzte
    End Sub
    • Dieser Code sucht die letzte nicht leere Zeile in der Spalte A von "Tabelle2" und füllt die Listbox mit den Werten von A3 bis zur letzten Zeile.

Häufige Fehler und Lösungen

  • Fehler 370: Dieser Fehler tritt auf, wenn der Zellbezug falsch ist. Stelle sicher, dass du die richtige Syntax verwendest und das Blatt korrekt angibst.

  • Fehler 1004: Dies geschieht oft, wenn der Zellbereich außerhalb der Grenzen liegt. Überprüfe, ob die angegebene Zeile existiert.

  • Problem mit Cells(3, 0): Der Index in Cells() beginnt bei 1. Verwende Cells(3, 1) für die Zelle A3.


Alternative Methoden

Eine alternative Methode zum Füllen der Listbox aus einer Tabelle ist die Verwendung der AddItem-Methode:

Private Sub UserForm_Initialize()
    Dim i As Long
    Lst_Kunden.Clear
    For i = 3 To 250 ' Ändere dies je nach Bedarf
        Lst_Kunden.AddItem Sheets("Tabelle2").Cells(i, 1).Value
    Next i
End Sub

Hiermit kannst du die Listbox zeilenweise befüllen, was mehr Flexibilität bietet.


Praktische Beispiele

  1. Daten aus Tabelle2 in die Listbox:

    • Angenommen, du möchtest die Namen aus Spalte A von "Tabelle2" in die Listbox einfügen. Der Code könnte wie folgt aussehen:
    Private Sub UserForm_Initialize()
       Dim LoLetzte As Long
       LoLetzte = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
       For i = 3 To LoLetzte
           Lst_Kunden.AddItem Sheets("Tabelle2").Cells(i, 1).Value
       Next i
    End Sub
  2. Daten aus ausgeblendeten Tabellen:

    • Der oben genannte Code funktioniert auch für ausgeblendete Tabellen, solange du den korrekten Bezug zur Tabelle angibst.

Tipps für Profis

  • Nutze die List-Eigenschaft der Listbox, um Multiple Values direkt aus einem Array zu füllen, was schneller ist als die AddItem-Methode.

  • Achte darauf, dass du keine unnötigen .Select-Anweisungen verwendest, um die Ausführungsgeschwindigkeit zu erhöhen.


FAQ: Häufige Fragen

1. Kann ich die Listbox auch mit Daten aus mehreren Spalten füllen? Ja, du kannst die ColumnCount-Eigenschaft der Listbox verwenden, um mehrere Spalten anzuzeigen.

2. Wie kann ich die Listbox nach einem bestimmten Wert filtern? Du kannst die Listbox leeren und dann nur die gewünschten Werte mit AddItem hinzufügen, basierend auf deinem Filterkriterium.

3. Kann ich mit VBA eine Listbox auch aus einer externen Excel-Datei füllen? Ja, du kannst eine externe Excel-Datei mit VBA öffnen und die Daten in die Listbox einfügen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige