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

Zeile von einer Listbox in die andere Listbox

Forumthread: Zeile von einer Listbox in die andere Listbox

Zeile von einer Listbox in die andere Listbox
15.08.2018 22:14:45
einer
Hallo,
ich habe ein Textfeld, in dem ich eine Artikelnummer eingebe. Danach wird aus einem Tabellenblatt gefiltert und alle zur Artikelnummer gehörenden Palettennummern angezeigt. Die möchte ich jetzt auswählen und die gleiche Zeile aus dem Tabellenblatt in die zweite Listbox kopieren.
Der Code zum Auswählen funktioniert:
Private Sub TextBox1_AfterUpdate()
Dim c As Range
Dim rngBereich As Range
Dim lngAnzahl As Long
Dim strFirst As String
ListBox1.Clear
With Sheets("Bestand")
Set rngBereich = .Columns("B:B")
Set c = rngBereich.Find(TextBox1, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
strFirst = c.Address
Do
ListBox1.AddItem .Cells(c.Row, 1)
lngAnzahl = ListBox1.ListCount
ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 2)
ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 3)
ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 4)
ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 5)
ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 6)
ListBox1.List(lngAnzahl - 1, 6) = .Cells(c.Row, 7)
ListBox1.List(lngAnzahl - 1, 7) = .Cells(c.Row, 8)
Set c = rngBereich.FindNext(c)
Loop While Not c Is Nothing And c.Address  strFirst
End If
End With
End Sub
Der Code zum kopieren gibt mir nur die erste Spalte wieder:
Private Sub CommandButton3_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(1)
Next i
End Sub
Alle ausgewählten Artikel sollen im Anschluss durch einen weiteren CommandButton in ein anderes Tabellenblatt ("WA") kopiert werden.
Kann mir jemand helfen?
Gruß
Andre
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile von einer Listbox in die andere Listbox
16.08.2018 15:59:24
einer
Hi
Private Sub CommandButton3_Click()
Dim i As Long
With ListBox2
.Clear
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
.AddItem ListBox1.List(i, 0)
.List(.ListCount - 1, 1) = ListBox1.List(i, 1)
.List(.ListCount - 1, 2) = ListBox1.List(i, 2)
'usw.
End If
Next i
End With
End Sub
cu
Chris
Anzeige
Anzeige

Infobox / Tutorial

Zeilen von einer Listbox in eine andere Listbox kopieren


Schritt-für-Schritt-Anleitung

Um die Zeilen von einer Listbox in eine andere Listbox in Excel zu kopieren, kannst du die folgenden Schritte befolgen:

  1. Textfeld zur Filterung verwenden: Verwende ein Textfeld, um die Artikelnummer einzugeben. Der Code dazu könnte wie folgt aussehen:

    Private Sub TextBox1_AfterUpdate()
       Dim c As Range
       Dim rngBereich As Range
       Dim lngAnzahl As Long
       Dim strFirst As String
       ListBox1.Clear
       With Sheets("Bestand")
           Set rngBereich = .Columns("B:B")
           Set c = rngBereich.Find(TextBox1, LookIn:=xlValues, lookat:=xlPart)
           If Not c Is Nothing Then
               strFirst = c.Address
               Do
                   ListBox1.AddItem .Cells(c.Row, 1)
                   lngAnzahl = ListBox1.ListCount
                   ListBox1.List(lngAnzahl - 1, 1) = .Cells(c.Row, 2)
                   ListBox1.List(lngAnzahl - 1, 2) = .Cells(c.Row, 3)
                   ListBox1.List(lngAnzahl - 1, 3) = .Cells(c.Row, 4)
                   ListBox1.List(lngAnzahl - 1, 4) = .Cells(c.Row, 5)
                   ListBox1.List(lngAnzahl - 1, 5) = .Cells(c.Row, 6)
                   ListBox1.List(lngAnzahl - 1, 6) = .Cells(c.Row, 7)
                   ListBox1.List(lngAnzahl - 1, 7) = .Cells(c.Row, 8)
                   Set c = rngBereich.FindNext(c)
               Loop While Not c Is Nothing And c.Address <> strFirst
           End If
       End With
    End Sub
  2. Zeilen in die zweite Listbox kopieren: Verwende den folgenden Code, um die ausgewählten Zeilen von ListBox1 in ListBox2 zu kopieren.

    Private Sub CommandButton3_Click()
       Dim i As Long
       With ListBox2
           .Clear
           For i = 0 To ListBox1.ListCount - 1
               If ListBox1.Selected(i) = True Then
                   .AddItem ListBox1.List(i, 0)
                   .List(.ListCount - 1, 1) = ListBox1.List(i, 1)
                   .List(.ListCount - 1, 2) = ListBox1.List(i, 2)
                   'usw.
               End If
           Next i
       End With
    End Sub
  3. Daten in ein anderes Tabellenblatt kopieren: Mit einem weiteren CommandButton kannst du die Daten von ListBox2 in ein anderes Tabellenblatt, z. B. „WA“, kopieren.


Häufige Fehler und Lösungen

  • Fehler: Nur die erste Spalte wird kopiert: Achte darauf, dass du die Indizes in der Schleife korrekt angibst. Der Code sollte ListBox1.List(i, n) verwenden, wobei n die entsprechende Spalte ist, die du kopieren möchtest.

  • Fehler: ListBox bleibt leer: Überprüfe, ob das Textfeld den richtigen Wert hat und ob die Filterung korrekt funktioniert. Stelle sicher, dass die Daten im Tabellenblatt „Bestand“ vorhanden sind.


Alternative Methoden

Wenn du nicht mit Listboxen arbeiten möchtest, kannst du auch alternative Steuerelemente wie ComboBoxen verwenden. Der Code zur Übertragung von Daten wäre ähnlich, aber du müsstest die Methoden anpassen, um die spezifischen Eigenschaften von ComboBoxen zu nutzen.


Praktische Beispiele

Ein praktisches Beispiel könnte die Verwendung einer UserForm sein, die sowohl eine TextBox zur Eingabe der Artikelnummer als auch zwei ListBoxen zur Anzeige und Auswahl der Palettennummern enthält. Dies ermöglicht eine intuitivere Benutzeroberfläche.


Tipps für Profis

  • Verwendung von Arrays: Überlege, die Daten in Arrays zu speichern, bevor du sie in die Listboxen einfügst. Das kann die Performance verbessern, besonders bei großen Datenmengen.

  • Ereignisgesteuertes Programmieren: Nutze die Ereignisse von Excel, um den Code effizienter zu gestalten. Beispielsweise kannst du die AfterUpdate-Ereignisse nutzen, um automatisch die Listboxen zu aktualisieren, wenn sich die Auswahl ändert.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen gleichzeitig auswählen?
Du kannst die MultiSelect-Eigenschaft der Listbox aktivieren, um die Auswahl mehrerer Zeilen zu ermöglichen.

2. Kann ich die Listboxen auch auf einem neuen Arbeitsblatt erstellen?
Ja, du kannst die Listboxen auf einem neuen Arbeitsblatt erstellen, indem du eine UserForm verwendest oder ActiveX-Steuerelemente direkt auf das Arbeitsblatt ziehst.

3. Wie speichere ich die Daten aus der Listbox in einer Excel-Tabelle?
Du kannst eine Schleife verwenden, um die Werte aus der Listbox zu iterieren und sie in die Zellen einer Tabelle zu schreiben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige