# Erklärung



## Stealth Cyborg (12. Juli 2004)

Hallo, 

ich habe folgendes Problem:

Ich hab hier ein Makro-Quelltext und muss den verstehen! Das Problem ist ich hab noch nie in meinem ganzen Leben was mit Makros gemacht. Wäre cool wenn mir einer von euch den Erklären kann.... danke


Dim CurRow As Integer

    For i = 1 To 231 Step 5
        If Cells(3, i) = "" Then
            CurRow = i
            Exit For
        End If
    Next i

    CellCharLeft = Int(CurRow / 26)
    CellCharRight = Chr(65 + CurRow - CellCharLeft)

    If CellCharLeft > 0 Then
        CellCharLeft = Chr(CellCharLeft)
        CurColumn = CellCharLeft & CellCharRight
    Else
        CurColumn = CellCharRight
    End If

    Columns(CurColumn & ":" & CurColumn).Select

    Selection.Insert Shift:=xlToLeft
    Selection.Insert Shift:=xlToLeft
    Selection.Insert Shift:=xlToLeft
    Selection.Insert Shift:=xlToLeft
    Selection.Insert Shift:=xlToLeft

    Sheets("Vorlage").Select
    Range("A1:E12").Select
    Selection.Copy

    Sheets("Januar").Select
    Cells(3, CurRow).Select
    ActiveSheet.Paste

    Cells(4, CurRow + 6).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"

    Cells(5, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
    Cells(6, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
    Cells(7, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
    Cells(8, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
    Cells(9, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"

    Cells(5, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
    Cells(6, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
    Cells(7, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
    Cells(8, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
    Cells(9, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
End Sub


----------



## thekorn (12. Juli 2004)

*Versuch*

Also zunächszt einmal: Ich weiß nicht was diese Makro soll, ich weiß nur was es macht und das was es macht macht es sehr umständlich!
Gehen wir es mal durch:


```
Dim CurRow As Integer
```
Hier wird eine Variable Deklariert, diese soll später für eine SPALTE stehen, wieso dan ROW und nicht COL etc.


```
For i = 1 To 231 Step 5
If Cells(3, i) = "" Then
CurRow = i
Exit For
End If
Next i
```
Hiermit wir in der  3. Zeile jede 5. Spalte durchsucht und geprüft ob diese Zelle leer ist, dabei ist zu beachten, dass nur jede 5. Zelle durchsucht wird, außerdem wird nicht die gesamte Zeile durchsucht!


```
CellCharLeft = Int(CurRow / 26)
CellCharRight = Chr(65 + CurRow - CellCharLeft)

If CellCharLeft > 0 Then
CellCharLeft = Chr(CellCharLeft)
CurColumn = CellCharLeft & CellCharRight
Else
CurColumn = CellCharRight
End If

Columns(CurColumn & ":" & CurColumn).Select

Selection.Insert Shift:=xlToLeft
Selection.Insert Shift:=xlToLeft
Selection.Insert Shift:=xlToLeft
Selection.Insert Shift:=xlToLeft
Selection.Insert Shift:=xlToLeft
```
Dies dient dazu die gesamte Spalte zu markieren, die in Zeile 3 keinen Wert hat. Außerdem werden dann links dieser Spalte 5 neue Spalten eingefügt.


```
Sheets("Vorlage").Select
Range("A1:E12").Select
Selection.Copy

Sheets("Januar").Select
Cells(3, CurRow).Select
ActiveSheet.Paste
```
Hier wird nun ein (wahrscheinlich) Spaltenkopf etc. aus der Tabelle "Vorlage" in die neuen Spalten eingefügt.


```
Cells(4, CurRow + 6).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"

Cells(5, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
Cells(6, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
Cells(7, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
Cells(8, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"
Cells(9, CurRow + 7).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-3]"

Cells(5, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
Cells(6, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
Cells(7, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
Cells(8, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
Cells(9, CurRow + 8).Select: ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "+RC[-5]-RC[-4]"
```
Hier werden alte Formel korrigiert, dies sollte eigendlich überflüssig sein, da Excel dies eigendlich automatisch macht, wenn Zeilen oder Spalten eingefügt werden (kann natürlich auch was anderes sein)

Dieser Code lässt sich wahrscheinlich, vorrausgesetzt du kannst das Einsatzgebiet besser beschreiben auf ca. 10 Zeilen  unterbringen!

vielleicht hilft es
gruß
thekorn


----------



## Stealth Cyborg (13. Juli 2004)

*Danke*

Danke, 

hat mir schon einbischen geholfen! Im moment kann ich Dir nicht mehr sagen! Muss mich jetzt erstmal zurechtfinden in diesem Quelltext und ein bischen dran rumexperimentieren!

Aber wenn ich wieder ne frage hab, meld ich micn einfach ;-)

Danke für deine Hilfe

Grüße

_Stealth Cyborg_


----------

