Excel / VBA: Selektierte Daten in Tabelle kopieren

Hallo,

die Excel Tabelle bezüglich derer ich schon einmal hier eine Frage gestellt habe, macht mir weiter sorgen :frowning:

Diesmal möchte ich eine UserForm einfügen die das Kopieren einzelner Einträge einer großen Tabelle ermöglicht.

Dazu habe ich den Kopier-Button der Userform wie folgt belegt:

'------------------------------------------
Private Sub kopieren_Click()

If Me.obnew = True Then
ActiveWorkbook.Worksheets.Add
Sheets(„Tabelle 1“).name = Me.txttab
End If

Dim ws1 As Worksheet, ws2 As Worksheet, iRow As Long, iRow2 As Long
Set ws1 = Worksheets(„Entwicklung“)
Set ws2 = Worksheets(Me.txttab)

iRow = ws1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
iRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

For i = 2 To 19
If CStr(ws1.Cells(2, i)) = copykrit1 Then
For j = 3 To iRow
If CStr(ws1.Cells(j, i)) = Me.copykrit2 Then
For k = 1 To 20
ws2.Cells(iRow2, k) = Me.ws1.Cells(j, k)
Next k
End If
Next j
End If
Next i

End Sub

'-----------------------------------------

Erklärung der Bezeichnungen:

obnew:
Optionsbox die abfragt ob eine neue tabelle erstellt werden soll, oder die Daten in eine bestehende Tabelle kopiert werden sollen.

txttab:
Textfeld in das der Name der neuen bzw. der bestehenden Tablle eingetragen wird.

copykrit1:
Erster Kpierkriterium (Spaltenname [z.B. Auftragsnummer, Kunde, Bauform, Status, usw.])

copycrit2:
Zweites Kopierkriterium (unterpunkte in spalten unter copykrit1 [Beispiel für copykrit1 = Kunde: Peter, Jürgen, Hans, Rüdiger usw.])


Die UserForm soll also bei Klick auf den Kopieren Button alle Daten aus der erste Tabelle die das zweite Kopierkriterium erfüllen. In eine neue bzw. bestehende Tabelle kopieren.
(Beispiel für copykrit1=Kunde und copykrit2=Peter: Kopiere alle Spalten (Aufträge) die an Peter geliefert werden an eine neue/bestehende Tabelle)


Ich hoffe man kann verstehen was ich mit der UserForm erreichen möchte und dass ihr mir da weiterhelfen könnt.

Schonmal vielen Dank im Voraus,

Simon

Hallo Simon,
mit VBA habe ich noch nicht gearbeitet und kann daher nicht weiter helfen. Sorry.

Gruß Christian

Hallo,

es tut mir leid, war aber auch nicht im Verteiler bei der ersten Anfrage.

Vielen Danke für Eure Versuche mir zu Helfen!

Habs grad selbst hinbekommen.

Falls jemand die Lösung interessiert:

Dim ws1 As Worksheet, ws2 As Worksheet, iRow As Long, iRow2 As Long

If Me.obnew = True Then
Sheets(„Entwicklung“).Copy After:=Sheets(3)
Sheets(„Entwicklung (2)“).name = Me.txttab.Value
Rows(„3:10000“).ClearContents
End If

Set ws1 = Worksheets(„Entwicklung“)
Set ws2 = Worksheets(Me.txttab.Value)

iRow = ws1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
iRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

If Me.oball = True Then
For i = 2 To 20
If CStr(ws1.Cells(2, i)) = Me.copykrit1 Then
For j = 3 To iRow
iRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If CStr(ws1.Cells(j, i)) = Me.copykrit2 Then
For k = 1 To 21
ws2.Cells(iRow2, k) = ws1.Cells(j, k)
Next k
End If
If j = iRow Then
MsgBox iRow2 - 3 & " Aufträge wurden erfolgreich kopiert."
Exit Sub
End If
Next j
End If
Next i
End If

If Me.obsingle = True Then
For i = 3 To iRow
iRow2 = ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If CStr(ws1.Cells(i, 1)) = Me.cboanr Then
For j = 1 To 21
ws2.Cells(iRow2, j) = ws1.Cells(i, j)
If j = 21 Then
MsgBox „Auftrag erfolgreich kopiert.“
Exit Sub
End If
Next j
End If
Next i

End If

End Sub

Hallo Simon,

leider habe ich nicht verstanden, wo genau jetzt das Problem liegt.

Funktioniert der Code nicht? Oder benötigst du Hilfe bei dem Aufruf der Userform? Oder…?

Gruß
Natator

Hallo,

sorry Noxius.
Da kann ich dir leider nicht weiterhelfen…