Guten Tag,
ich würde gerne mit einem Makro, oder auch sonstwie auf andere Weise falls das einfacher ist, in Excel ganze Zeilen in andere Tabellenblätter verschieben, je nach einem Eintrag, den man aus einem Dropdown-Menü in der Spalte A auswählt. Der Name des auszuwählenden Eintrags ist gleich dem Namen des Tabellenblatts, in das die Zeile verschoben werden soll.
Sub Worksheet_activate()
'NWA wird durchsucht
Dim i As Long
With Sheets("NWA")
For i = .Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If .Cells(i, "A") Like "QA" Then
.Rows(i).Copy Sheets("QA").Cells(Sheets("QA").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i).ClearContents
End If
If .Cells(i, "A") Like "T1" Then
.Rows(i).Copy Sheets("T1").Cells(Sheets("T1").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i).ClearContents
End If
Next
End With
'QA wird durchsucht
Dim i2 As Long
With Sheets("QA")
For i2 = .Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If .Cells(i2, "A") Like "NWA" Then
.Rows(i2).Copy Sheets("NWA").Cells(Sheets("NWA").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i2).ClearContents
End If
If .Cells(i2, "A") Like "T1" Then
.Rows(i2).Copy Sheets("T1").Cells(Sheets("T1").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i2).ClearContents
End If
Next
End With
'T1 wird durchsucht
Dim i3 As Long
With Sheets("T1")
For i3 = .Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If .Cells(i3, "A") Like "NWA" Then
.Rows(i3).Copy Sheets("NWA").Cells(Sheets("NWA").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i3).ClearContents
End If
If .Cells(i3, "A") Like "QA" Then
.Rows(i3).Copy Sheets("QA").Cells(Sheets("QA").Cells(Rows.Count, "B").End(xlUp).Row + 1, "A")
.Rows(i3).ClearContents
End If
Next
End With
End Sub
Mit diesem Code funktioniert das auch schon für drei Tabellenblätter. Dementsprechend sind auch drei Makros mit diesem identischen Code angelegt. Ich wüsste auch, wie ich das jetzt für weitere Tabellenblätter nach dem gleichen Schema mache, dabei würde sich der Code jedoch extrem aufblähen, da das am Ende für bis zu 20 Tabellenblätter funktionieren soll. Ich bin mir sicher, das geht auch schöner mit viel weniger Code, einem einzigen Makro und so, dass es für alle Tabellenblätter funktioniert, deren Namen ich dem Dropdown-Menü in Spalte A hinzufüge. Ich habe es bisher aber leider nicht hinbekommen. Ich muss dazu sagen, dass ich vorher noch nie etwas in VBA programmiert habe.
Eine Nette Zusatzfunktionalität wäre, dass sich die anderen Zeilen entsprechend nach oben verschieben, sodass nach dem jeweiligen Verschieben keine leeren Zeilen mittendrin vorhanden sind. Vielen Dank im Voraus für eure Hilfe!
Gruß
kzi
|