Ein etwas typischer Fall. Sie übertragen Daten von einer Tabelle in eine andere. Dabei ist die Spaltenanordung eine andere in der Zieltabelle. Die Zieltabelle wird jedoch immer mal wieder spaltenanordnungstechnisch umgestellt. Um nicht andauernd den Quellcode ändern zu müssen, suchen wir in der Zieltabelle (TabAusgan2) nach den jeweiligen Überschriften, um die richtigen Zielspalten zu finden. Dieses Bespiel entstand unter anderen in meinem Excel-VBA-Grundlagenkurs am Freitag. Ich habe das Beispiel etas im Makro selbst doumentiert.
Ausgangsssituation eine Tabelle mit Daten und beliebige vielen Überschriftsspalten in Zeile 1.
Die Zieltabelle "TabAusgang2" hat zwar die gleichen Titel in der ersten Zeile, jedoch eine völlig andere Anordung der Spalten.
Sub SpaltenÜbertragenDynamisch()
Dim Spalte As Long
Dim SpalteMax As Long
Dim Treffer As Range
'Prämisse: Beide Tabellen verwenden die gleichen Spaltentitel, jedoch in anderer Anordnung
' Spaltentitel muss eindeutig sein und in der ersten Zeile stehen.
TabAusgang2.Range("A2:Z" & TabAusgang2.Rows.Count).Clear 'Clear löscht alles
With TabEingang
.Rows(1).Interior.ColorIndex = xlNone
SpalteMax = .UsedRange.Columns.Count
For Spalte = 1 To SpalteMax
'wo wird gesucht nach was wird gesucht wie wird gesucht (genaue Übereinstimmung)
Set Treffer = TabAusgang2.Rows(1).Find(what:=.Cells(1, Spalte).Value, lookat:=xlWhole)
If Treffer Is Nothing Then
'Überschrift wird nicht gefunden.--> Rot
.Cells(1, Spalte).Interior.ColorIndex = 3
Else
'Überschrift, also Spalte wird gefunden.
.Columns(Spalte).Copy Destination:=TabAusgang2.Cells(1, Treffer.Column)
'alternativ
.Columns(Spalte).Copy Destination:=TabAusgang2.Columns(Treffer.Column)
End If
Next Spalte
End With
End Sub
VG und schönes Wochenende
Bernd