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 |
| 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 |
| 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?