Erklärung

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

Code:
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.

Code:
 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!

Code:
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.

Code:
 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.

Code:
 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
 
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_
 

Neue Beiträge

Zurück