Hi,
ich habe in Excel-VBA ein kleines Logikproblem. Habe da folgende Function:
Public Sub MoveColumn(iQuelle As Integer, iZiel As Integer, strTitle As String)
If iQuelle < iZiel Then 'Spalte wird um mindestens 1 Zelle nach rechts verschoben
Columns(iZiel + 1).Select
Selection.EntireColumn.Insert
Columns(iQuelle).Cut (Columns(iZiel + 1))
If Not strTitle = "" Then Cells(1, iZiel + 1).Value = strTitle
Columns(iQuelle).Delete
End If
If iQuelle > iZiel Then 'Spalte wird um mind. 1 Zelle nach links verschoben
Columns(iZiel).Select
Selection.EntireColumn.Insert
Columns(iQuelle + 1).Cut (Columns(iZiel))
If Not strTitle = "" Then Cells(1, iZiel).Value = strTitle
Columns(iQuelle + 1).Delete
End If
If iQuelle = iZiel Then
If Not strTitle = "" Then Cells(1, iZiel).Value = strTitle
End If
Cells(1, 1).Select
End Sub
Die Sub rufe ich auf mit:
iColAusgang = 3
iColZiel = 6
Call MoveColumn(iColAusgang, iColZiel, "3auf6")
Was passiert:
Excel geht zur Spalte 6, fügt eine neue Spalte ein (also zwischen Spalte 5 und 6), und verschiebt die Spalte 3 zur neu eigefügten Spalte 6 und löscht zum Schluss die leere Spalte 3.
Das klappt auch alles fein.
Nun möchte ich aber weitere Calls der Sub machen, also danach z.B. Spalte 37 in Spalte 3 verschieben, dann Spalte 4 zu Spalte 10 etc.
Nur habe ich ja im ersten "Call MoveColumn(iColAusgang, iColZiel, "3auf6")" die Spalte 3 verschoben, d.h. in der 3. Spalte (C) steht nun die 4.Spalte (D). D.h. ein Aufruf
iColAusgang = 4
iColZiel = 10
Call MoveColumn(iColAusgang, iColZiel, "3auf10")
klappt so nicht mehr, weil nun ein anderer Bezug vorliegt.
Wie kann ich intelligenterweise diese Spaltenverschiebung mitschreiben (Zähler erhöhen/verringern z.B.) und dies dann in die Public Sub einfliessen lassen?