Hallo,
ich geh mal davon aus, deine Spalten in Tabelle1 sehen so aus.
Rot |
Weiß |
Blau |
Lila |
Gelb |
Grün |
1 |
44 |
4 |
77 |
7 |
11 |
2 |
55 |
5 |
88 |
8 |
22 |
3 |
66 |
6 |
99 |
9 |
33 |
Dann kannst du meinen Code verwenden, um die Spalten in Tabelle2 in der festgelegten Reihenfolge umgestellt einzufügen.
Grün |
Rot |
Blau |
Gelb |
11 |
1 |
4 |
7 |
22 |
2 |
5 |
8 |
33 |
3 |
6 |
9 |
Private Sub Test()
Call Spalten_Automatisiert_umstellen(Tabelle2, "Grün", "Rot", "Blau", "Gelb")
End Sub
Public Sub Spalten_Automatisiert_umstellen(ByVal wsTab As Worksheet, ParamArray Data() As Variant)
Dim lngI As Long
Dim Letzte As Long
With wsTab
Letzte = .Cells(Rows.Count, 1).End(xlUp).Row
For lngI = LBound(Data) To UBound(Data)
ActiveSheet.Columns(SpaltenName(Data(lngI))).Copy Destination:=.Cells(Letzte + 1, lngI + 1)
Next lngI
End With
End Sub
Public Function SpaltenName(ByVal Spalte As Variant) As Variant
Dim rng As Range
If IsNumeric(Spalte) Then
SpaltenName = Spalte
Else
Set rng = Range(Cells(1, 1), Cells(1, Columns.Count)).Find(What:=Spalte, LookIn:=xlValues, LookAt:=xlWhole)
If Not rng Is Nothing Then
SpaltenName = Split(rng.Address(, 0), "$")(0)
End If
End If
End Function
Der Code kopiert der Einfachkeit halber jedesmal die Überschriften mit. Die brauchst du nur zu löschen, wenn sie dich storen.
Ich war da jetzt zu faul dazu, das zu machen.
Sabina
|