ich habe in einer Userform eine Listbox mit mehreren Spalten, die durch Klick auf einen CommandButton in ein Tabellenblatt (WA) kopiert werden sollen. Dazu sollen sie aus einem anderen Tabellenblatt (Bestand) gelöscht werden.
Im Grunde funktioniert das mit meinem Code ABER den o.g. zweiten Teil (Löschen) macht er nur, wenn die Zeilen markiert sind - was auch so sein soll.
Das Kopieren in das Tabellenblatt macht er auch ohne dass die Zeilen markiert sind - und das soll nicht so sein.
Ich habe kaum Kenntnisse und vermutlich muss nur die Bedingung "If selected..." eingefügt werden, aber ich scheitere an Variabelen.
Kann mir freundlicherweise jemand die fehlende Codezeile schreiben?
Mein Code ist:
Private Sub CommandButton3_Click()
' Zeile aus Listbox2 in Tabellenblatt Warenausgang kopieren
Dim last As Integer
last = Tabelle3.Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = 0 To ListBox2.ListCount - 1
Tabelle3.Cells(last, 1) = ListBox2.List(i, 0)
Tabelle3.Cells(last, 2) = ListBox2.List(i, 1)
Tabelle3.Cells(last, 3) = ListBox2.List(i, 2)
Tabelle3.Cells(last, 4) = ListBox2.List(i, 3)
Tabelle3.Cells(last, 5) = ListBox2.List(i, 4)
Tabelle3.Cells(last, 6) = ListBox2.List(i, 5)
Tabelle3.Cells(last, 7) = ListBox2.List(i, 6)
Tabelle3.Cells(last, 8) = ListBox2.List(i, 7)
Tabelle3.Cells(last, 9) = ListBox2.List(i, 8)
last = last + 1
Next
' Zeile aus Tabellenblatt Bestand löschen
Dim intz As Integer, durchsuchen, finden As Range
Dim X&
With ListBox2
For X = .ListCount - 1 To 0 Step -1 'die Schleife unbedingt rücwärts laufen lassen!
If .Selected(X) = True Then
Set durchsuchen = Sheets("Bestand").Range("A2:I" & Sheets("Bestand").Range(" _
A65536").End(xlUp).Row)
For Each finden In durchsuchen
If finden.Text = .List(X, 0) Then 'Textvergleich der Tabelle mit Listbox _
Zeile(x) aus Spalte5!
intz = finden.Row 'Zeile ermitteln
Cells(intz, 7).EntireRow.Delete 'Zeile in Tabelle löschen
Exit For
End If
Next finden
'erst jetzt den Eintrag in Listbox löschen!
.RemoveItem (X)
End If
Next
End With
End Sub