Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Listbox.Item komplett in 2. Listbox kopieren

Forumthread: Listbox.Item komplett in 2. Listbox kopieren

Listbox.Item komplett in 2. Listbox kopieren
13.10.2016 09:43:54
Marc
Hallo zusammen,
ich möchte gerne das jeweils ausgewählte Item aus einer Listbox komplett in eine 2. Listbox kopieren. Das funktioniert auch gut mit der folgenden Sub:

Private Sub CommandButton1_Click()
a = 0
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
ListBox2.AddItem
ListBox2.List(a,0) = ListBox1(i,0)
ListBox2.List(a,1) = ListBox1(i,1)
ListBox2.List(a,2) = ListBox1(i,2)
a = a +1
Next i
End Sub

Leider ist der Index relativ gross, ich frage mich nun, ob ich nicht alles in einem Schritt übernehmen kann:

Private Sub CommandButton1_Click()
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
Next i
End Sub

So kopiert er mir aber leider nur ListBox1.List(i,0). Gibt es die Möglichkeit, alle Index-Positionen in einem Schritt zu übernehmen?
Sorry, ich hoffe, ich habe das verständlich ausgedrückt...;-). Danke für Eure Hilfe!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nein, gibt es nicht! (owT)
13.10.2016 09:47:40
EtoPHG

AW: Nein, gibt es nicht! (owT)
13.10.2016 10:06:17
Marc
EtoPHG, danke für die kurze Antwort, auch wenn sie leider nicht meinem Wunsch entspricht;-)
Lg
Marc
Übertrage auch die Spalten per Schleife...
13.10.2016 10:50:25
Martin
Hallo Marc,
hast du es dir vielleicht so vorgestellt?
Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer
For i = 0 To ListBox1.ListCount - 1
With ListBox2
If ListBox1.Selected(i) = True Then
.AddItem
For j = 0 To ListBox1.ColumnCount - 1
.List(.ListCount - 1, j) = ListBox1.List(i, j)
Next
End If
End With
Next i
End Sub
Viele Grüße
Martin
Anzeige
AW: Übertrage auch die Spalten per Schleife...
13.10.2016 12:09:04
Marc
Hallo Martin,
nicht so vorgestellt, erfüllt aber trotzdem genau meine Anforderung! Ist eigentlich logisch und ich hätte selber drauf kommen müssen, aber manchmal sieht man den Wald vor lauter Bäume nicht. Super, danke vielmals!
Lg
Marc
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox-Items in eine zweite Listbox kopieren


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge eine UserForm hinzu: Klicke auf "Einfügen" > "UserForm".
  3. Füge zwei Listboxen hinzu: Ziehe zwei Listboxen (ListBox1 und ListBox2) aus der Toolbox auf die UserForm.
  4. Füge einen Button hinzu: Ziehe einen Button (CommandButton1) auf die UserForm.
  5. Kopiere den folgenden Code in das Codefenster der UserForm:
Private Sub CommandButton1_Click()
    Dim i As Integer, j As Integer
    For i = 0 To ListBox1.ListCount - 1
        With ListBox2
            If ListBox1.Selected(i) = True Then
                .AddItem
                For j = 0 To ListBox1.ColumnCount - 1
                    .List(.ListCount - 1, j) = ListBox1.List(i, j)
                Next
            End If
        End With
    Next i
End Sub
  1. Teste die UserForm: Fülle ListBox1 mit Daten und klicke auf den Button, um die ausgewählten Items in ListBox2 zu kopieren.

Häufige Fehler und Lösungen

  • Problem: Nur die erste Spalte wird kopiert.

    • Lösung: Stelle sicher, dass die Schleife über alle Spalten in der Listbox geht, wie im obenstehenden Beispiel.
  • Problem: ListBox2 bleibt leer.

    • Lösung: Überprüfe, ob Elemente in ListBox1 ausgewählt sind. Stelle sicher, dass ListBox1.Selected(i) korrekt bewertet wird.

Alternative Methoden

Eine andere Möglichkeit, Items zu kopieren, ist die Verwendung einer einfachen Zeile, die jedoch nur die erste Spalte überträgt:

Private Sub CommandButton1_Click()
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)
    Next i
End Sub

Beachte, dass diese Methode nicht für alle Spalten geeignet ist, wenn du mehrere Datenpunkte übertragen möchtest.


Praktische Beispiele

Angenommen, du hast eine ListBox1, die Namen und Alter enthält. Mit dem obigen Code kannst du alle ausgewählten Namen und Alter in ListBox2 kopieren.

Beispiel für die Daten in ListBox1:

Name Alter
Max 25
Anna 30
Peter 22

Wenn du Max und Anna auswählst und auf den Button klickst, werden beide Einträge in ListBox2 übernommen.


Tipps für Profis

  • Verwende ColumnCount: Um sicherzustellen, dass du alle Spalten kopierst, verwende die ColumnCount-Eigenschaft der Listbox.
  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um potenzielle Laufzeitfehler zu vermeiden.
On Error Resume Next ' Fehler ignorieren
' Dein Code hier
On Error GoTo 0 ' Fehlerbehandlung zurücksetzen

FAQ: Häufige Fragen

1. Frage
Wie kann ich die Listboxen mit Daten aus einem Excel-Arbeitsblatt füllen?
Antwort: Du kannst die Listboxen mit einer Schleife füllen, indem du die Werte aus den Zellen des Arbeitsblatts abfragst.

2. Frage
Kann ich die Listboxen auch mit VBA dynamisch erstellen?
Antwort: Ja, du kannst Listboxen zur Laufzeit erstellen, indem du das UserForm.Controls.Add-Methodenpaar verwendest.

3. Frage
Wie kann ich die Listboxen formatieren?
Antwort: Du kannst die Eigenschaften der Listboxen im Eigenschaftenfenster des VBA-Editors ändern, um Schriftart, Hintergrundfarbe usw. anzupassen.

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