Mehrere Makros zu einem machen?

Hi,
ich habe für eine Exceltabelle 3 Makros geschrieben. Sie ähneln sich sehr stark, beziehen sich aber auf unterschiedliche Stellen in der Tabelle. Im Moment habe ich 3 Button eingefügt um die Makros auszuführen. Wie kann ich die Makros verändern, damit ich nur noch einen Button habe um alle 3 auszuführen?

Hier die Makros:

Sub Steady_Motor_4()
Dim Zei As Long
Application.ScreenUpdating = False
With Worksheets(„4. Quartal“)
Zei = .Cells(.Rows.Count, 7).End(xlUp).Row
.Range(„BM5:BM133000“).ClearContents
.Range(„BM5:BM“ & Zei).FormulaLocal = „=(W5-W6)/W5“
.Range(„BN5:BN“ & Zei).FormulaLocal = „=WENN((ABS(BM5-BM6)“""");BP4+1;1)"
.Range(„BQ5:BQ“ & Zei).FormulaLocal = „=WENN(BP5>BP4;$A5-$A4+BQ4;0)“
.Range(„BR5:BR“ & Zei).FormulaLocal = „=MINUTE(BQ5)“
.Range(„BS5:BS“ & Zei).FormulaLocal = „=STUNDE(BQ5)“
.Range(„BT5:BT“ & Zei).FormulaLocal = „=WENN((BR5+60*BS5)>=$BT$3;“„Steady“";"""")"
.Range(„BM5:BT“ & Zei).Value = .Range(„BM5:BT“ & Zei).Value
.Range(„BN5:BS“ & Zei).ClearContents
End With
Application.ScreenUpdating = True
End Sub

Sub Steady_P_4()
Dim Zei As Long
Application.ScreenUpdating = False
With Worksheets(„4. Quartal“)
Zei = .Cells(.Rows.Count, 7).End(xlUp).Row
.Range(„BV5:BV133000“).ClearContents
.Range(„BV5:BV“ & Zei).FormulaLocal = „=(AW5-AW6)/AW5“
.Range(„BW5:BW“ & Zei).FormulaLocal = „=WENN((ABS(BV5-BV6)“""");BY4+1;1)"
.Range(„BZ5:BZ“ & Zei).FormulaLocal = „=WENN(BY5>BY4;$A5-$A4+BZ4;0)“
.Range(„CA5:CA“ & Zei).FormulaLocal = „=MINUTE(BZ5)“
.Range(„CB5:CB“ & Zei).FormulaLocal = „=STUNDE(BZ5)“
.Range(„CC5:CC“ & Zei).FormulaLocal = „=WENN((CA5+60*CB5)>=$CC$3;“„Steady“";"""")"
.Range(„BV5:CC“ & Zei).Value = .Range(„BV5:CC“ & Zei).Value
.Range(„BW5:CB“ & Zei).ClearContents
End With
Application.ScreenUpdating = True
End Sub

Sub Temp_P4()
Dim Zeig As Long
Application.ScreenUpdating = False
With Worksheets(„4. Quartal“)
Zeig = .Cells(.Rows.Count, 7).End(xlUp).Row
.Range(„CP5:CP133000“).ClearContents
.Range(„CP5:CP“ & Zeig).FormulaLocal = „=(AY5-AY6)/AY5“
.Range(„CQ5:CQ“ & Zeig).FormulaLocal = „=WENN((ABS(CP5)“""");CS4+1;1)"
.Range(„CT5:CT“ & Zeig).FormulaLocal = „=WENN(CS5>CS4;$A5-$A4+CT4;0)“
.Range(„CU5:CU“ & Zeig).FormulaLocal = „=MINUTE(CT5)“
.Range(„CV5:CV“ & Zeig).FormulaLocal = „=STUNDE(CT5)“
.Range(„CW5:CW“ & Zeig).FormulaLocal = „=WENN((CU5+60*CV5)>=$CW$3;“„Steady“";"""")"
.Range(„CP5:CW“ & Zeig).Value = .Range(„CP5:CW“ & Zeig).Value
.Range(„CQ5:CV“ & Zeig).ClearContents
End With
Application.ScreenUpdating = True
End Sub

Für eure Hilfe wäre ich sehr dankbar!

Daniel

ich habe für eine Exceltabelle 3 Makros geschrieben. Sie
ähneln sich sehr stark, beziehen sich aber auf
unterschiedliche Stellen in der Tabelle. Im Moment habe ich 3
Button eingefügt um die Makros auszuführen. Wie kann ich die
Makros verändern, damit ich nur noch einen Button habe um alle
3 auszuführen?

Hallo Daniel,

ich hab jetzt nur flüchtig geschaut. Nachher schaue ich nochmal genauer ob man in einem Makro mit einer Schleife von 1-3 alle „erledigen“ kann.

Einstweilen spontan, erstmal so:

Sub Alle()
Call Steady_Motor_4
Call Steady_P_4
Call Temp_P4
End Sub

Beim Überblick habe ich geshen, daß die Codezeilen zu wenige sind und zu oft verschieden als da jetzt pro Einzelprozedur Schleifen zu bauen, lohnt sich gar nicht, bringt nix.

Alle drei einfach in eine prozedur zu schreiben ist so an der Grenze, Tendenz geht zu kleinen prozeduren.

Von daher ist 3mal Call völlig okay.
Wie gesagt, das 3maL Call in For 1 to 3 umzuwandeln muß ich noch schauen, muß grad mal kurz weg.

Gruß
Reinhard