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

Forumthread: markierte Werte aus Listbox in Tabelle kopieren

markierte Werte aus Listbox in Tabelle kopieren
01.12.2018 16:42:31
Peter
Hallo ihr Excelspezialisten,
ich suche den ganzen Tag schon nach einer Lösung.
Ich habe eine UF mit Combobox1 und Listbox1.
Mit Combobox1 wähle ich einen Wert aus zum Filtern. Mit Commandbutton3 übernehme ich die gefilterten Daten in die Listbox1. Code hierfür angefügt:
Private Sub CommandButton3_Click()
Dim lz As Long          'für Filter
Dim lLetzte As Long     'für Listbox
Dim lZeile As Long      'für Listbox
Dim lLibox As Long      'für Listbox
Dim Wert As String      'für Filter
Dim wks As Worksheet
Set wks = ActiveSheet
Wert = Me.ComboBox1.Value
With wks
If .AutoFilterMode = True Then
If .FilterMode = True Then .ShowAllData
Else
lz = .Cells(Rows.Count, 1).End(xlUp).Row    'LastZell in Tabelle1 ermitteln
.Range("$A$1:$D$" & lz).AutoFilter
.Range("$A$1:$D$" & lz).AutoFilter Field:=4, Criteria1:=Wert
End If
End With
With Me.ListBox1
.ColumnCount = 4
.Font.Size = 9
.MultiSelect = fmMultiSelectMulti
.ColumnWidths = "3cm;3cm;3cm;3cm"
End With
With Worksheets("Tabelle1")
lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
For lZeile = 2 To lLetzte
If .Cells(lZeile, 1) = "" Then Exit For
If .Rows(lZeile).Hidden = False Then
ListBox1.AddItem
ListBox1.List(lLibox, 0) = .Cells(lZeile, 1).Value
ListBox1.List(lLibox, 1) = .Cells(lZeile, 2).Value
ListBox1.List(lLibox, 2) = .Cells(lZeile, 3).Value
ListBox1.List(lLibox, 3) = .Cells(lZeile, 4).Value
lLibox = lLibox + 1
End If
Next
End With
''' wks.UsedRange.AutoFilter
'''wks.Range("$A$1:$D$" & lz).AutoFilter
End Sub

Was ich jetzt bitte benötige ist, die ausgewählten Daten der Multiselect Listbox in die Tabelle2 zu kopieren in Zelle A2.
Besten Dank für eure Hilfe.
Gruss
Peter
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: markierte Werte aus Listbox in Tabelle kopieren
01.12.2018 17:22:03
onur
Und wie sollen alle Daten in A2 passen?
AW: markierte Werte aus Listbox in Tabelle kopieren
01.12.2018 17:51:00
Peter
Hallo Onur,
keine Ahnung. Ich dachte nur dass bei Copy - Befehl und dann einfügen eine Zelle angegeben wird.
Wie Du siehst ich habe eben keine Kenntnis, wie die markierten Zeilen in die Tabelle 2 gelangen können.
Daher meine Frage ans Forum.
Wahrscheinlich muss eine Zeile nach der anderen eingefügt werden. Aber wie? Das möchte ich gerne von euch erfahren.
Gruss
Peter
Anzeige
AW: markierte Werte aus Listbox in Tabelle kopieren
01.12.2018 18:12:56
Matthias
Moin!
Also ganz auf die schnelle, könnte das so gehen:
Private Sub CommandButton2_Click()
Dim wks As Worksheet
Dim zeile As Long
Dim eintrag As Long
Dim spalte As Long
Set wks = Tabelle2
zeile = 1   'fügt fest ab Zeile 1 ein, hier ggf. noch die erste freie Zeile ermitteln und ab  _
dort eintragen
For eintrag = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(eintrag) Then
For spalte = 1 To 4
wks.Cells(zeile, spalte) = Me.ListBox1.List(eintrag, spalte - 1)
Next spalte
zeile = zeile + 1
End If
Next
End Sub

Dabei beachten, die Werte werden fest ab Zeile 1 in Tabelle2 eingetragen. Das müsstest du noch anpassen. ist als Hinweiskommentar aber noch im COde.
VG
Anzeige
AW: markierte Werte aus Listbox in Tabelle kopieren
02.12.2018 08:03:07
Peter
Guten Morgen Matthias,
vielen Dank für Deine Hilfe. Es funktioniert einwandfrei.
Wünsche Dir noch einen schönen Sonntag.
Gruss
Peter
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Markierte Werte aus Listbox in Tabelle kopieren


Schritt-für-Schritt-Anleitung

Um die markierten Werte aus einer Listbox in eine Tabelle zu kopieren, gehe wie folgt vor:

  1. Erstelle eine Userform mit einer ComboBox (ComboBox1), einer ListBox (ListBox1) und zwei CommandButtons (CommandButton2 und CommandButton3).

  2. Füge den Code zum Filtern der Daten in die ListBox ein, wie im folgenden Beispiel:

    Private Sub CommandButton3_Click()
        Dim lz As Long
        Dim lLetzte As Long
        Dim lZeile As Long
        Dim lLibox As Long
        Dim Wert As String
        Dim wks As Worksheet
        Set wks = ActiveSheet
        Wert = Me.ComboBox1.Value
        With wks
            If .AutoFilterMode = True Then
                If .FilterMode = True Then .ShowAllData
            Else
                lz = .Cells(Rows.Count, 1).End(xlUp).Row
                .Range("$A$1:$D$" & lz).AutoFilter
                .Range("$A$1:$D$" & lz).AutoFilter Field:=4, Criteria1:=Wert
            End If
        End With
        With Me.ListBox1
            .ColumnCount = 4
            .Font.Size = 9
            .MultiSelect = fmMultiSelectMulti
            .ColumnWidths = "3cm;3cm;3cm;3cm"
        End With
        With Worksheets("Tabelle1")
            lLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
            For lZeile = 2 To lLetzte
                If .Cells(lZeile, 1) = "" Then Exit For
                If .Rows(lZeile).Hidden = False Then
                    ListBox1.AddItem
                    ListBox1.List(lLibox, 0) = .Cells(lZeile, 1).Value
                    ListBox1.List(lLibox, 1) = .Cells(lZeile, 2).Value
                    ListBox1.List(lLibox, 2) = .Cells(lZeile, 3).Value
                    ListBox1.List(lLibox, 3) = .Cells(lZeile, 4).Value
                    lLibox = lLibox + 1
                End If
            Next
        End With
    End Sub
  3. Füge den folgenden Code zum Übertragen der ausgewählten Daten in Tabelle2 ein:

    Private Sub CommandButton2_Click()
        Dim wks As Worksheet
        Dim zeile As Long
        Dim eintrag As Long
        Dim spalte As Long
        Set wks = Tabelle2
        zeile = 1
        For eintrag = 0 To Me.ListBox1.ListCount - 1
            If Me.ListBox1.Selected(eintrag) Then
                For spalte = 1 To 4
                    wks.Cells(zeile, spalte) = Me.ListBox1.List(eintrag, spalte - 1)
                Next spalte
                zeile = zeile + 1
            End If
        Next
    End Sub
  4. Teste die Userform, indem Du einen Wert auswählst und die markierten Daten über den zweiten CommandButton in Tabelle2 überträgst.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des gültigen Bereichs"
    Stelle sicher, dass die ListBox nicht leer ist und dass Du tatsächlich Einträge ausgewählt hast, bevor Du den Übertragungs-Button klickst.

  • Fehler: Daten werden nicht in die richtige Tabelle kopiert
    Überprüfe, ob der Tabellenname im Code korrekt ist und ob die Tabelle tatsächlich existiert.


Alternative Methoden

Wenn Du die Daten nicht über VBA kopieren möchtest, kannst Du auch die folgenden Methoden in Betracht ziehen:

  • Kopieren und Einfügen: Selektiere die gewünschten Zellen in der Listbox, kopiere sie und füge sie manuell in die gewünschte Tabelle ein.
  • Excel-Funktionen: Verwende Funktionen wie FILTER, um bestimmte Daten zu extrahieren, falls Deine Excel-Version dies unterstützt.

Praktische Beispiele

Angenommen, Du hast eine Liste von Produkten, die Du filtern möchtest. Wenn Du die Produkte nach Kategorie filterst und dann die Auswahl in eine neue Tabelle überträgst, wird die neue Tabelle alle relevanten Produkte ab Zeile 1 auflisten.


Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Optimiere die Performance, indem Du Application.ScreenUpdating = False zu Beginn Deines Codes und Application.ScreenUpdating = True am Ende hinzufügst, um die Bildschirmaktualisierung während der Ausführung zu deaktivieren.

FAQ: Häufige Fragen

1. Wie kann ich die Daten nicht ab Zeile 1, sondern ab der ersten freien Zeile einfügen?
Du kannst den Code anpassen, um die erste freie Zeile mit folgender Zeile zu finden:

zeile = wks.Cells(wks.Rows.Count, 1).End(xlUp).Row + 1

2. Kann ich die Listbox auch so einstellen, dass sie nur eine Auswahl zulässt?
Ja, ändere die MultiSelect-Eigenschaft der ListBox auf fmMultiSelectSingle, um nur eine Auswahl zuzulassen.

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