Genau ich muss mit einer schleife arbeiten, aber ich weiß nicht wo und wie ich die einbauen soll... die 2 Befehle unten funktionieren. Ich muss nur noch die abfrage in jeder zelle (schleife) einbauen.
Mein Makro soll erstmal in A1 überprüfen ob der Wert >70 ist, wenn ja soll der Zelle in F3 (Wert) um die Zelle K5 (Wert) addiert werden. Wenn nein, soll in A1 abgeprüft werden ob der Wert >50 ist. Wenn ja soll die Zelle in F4 um die Zelle K5 (Wert) addiert werden. Diese Abfrage soll 3 weitere Male durchlaufen werden, bis die WAHR (ja) und ein Wert aus der Spalte um K5 addiert ist.
Dann soll automatisch in der Zelle B1 gesprungen und dieselbe Abfragen durchlaufen werden.
Sub StartMakro()
Verzweigung
naechste_spalte
End Sub
Sub Verzweigung()
Worksheets("Tabelle1").Activate
Dim Werte As Double
Cells(7, 8) = Cells(7, 8) - Cells(3, 1)
If Cells(3, 3).Value >= 70 Then ' Zelle C3 größer gleich 70 dann
Cells(3, 8).Value = Cells(3, 8).Value + Cells(3, 1).Value ' Zelle H3 um die Zelle A3 addiert
ElseIf Cells(3, 3).Value >= 50 Then
Cells(4, 8).Value = Cells(4, 8).Value + Cells(3, 1).Value
ElseIf Cells(3, 3).Value >= 30 Then
Cells(5, 8).Value = Cells(5, 8).Value + Cells(3, 1).Value
ElseIf Cells(3, 3).Value >= 20 Then
Cells(6, 8).Value = Cells(6, 8).Value + Cells(3, 1).Value
Else
Cells(7, 8).Value = Cells(7, 8).Value + Cells(3, 1).Value
End If
End Sub
Sub naechste_spalte()
Select Case Selection.Column
Case Is < 6 'wenn Spalte C-E, dabei ist 6 (F) die letzte Spalte die kein Wert hat und ab da soll der zurück
Selection.Offset(0, 1).Select
' Eine Spalte weiter rechts springen & und den oben genutzen Makro in der neuen Zelle durchlaufen
' bis die Zeile fertig ist, dann muss in die neue Zeile gesprungen werden
Case 6 'wenn Spalte F
Selection.Offset(1, -3).Select
' Nach Spalte E in die nächsten Zeile springen
End Select
' Habe jetzt mal 2 Sekunden eingestellt, falls gewünscht bei
' TimeSerial(0, 0, 2) zu ändern
'das Makro stoppt nach alle 3 Zeilen
If Selection.Row Mod 3 = 0 And Selection.Column = 3 Then 'Die 3 steht für die Spalte C
If MsgBox("Soll weiter gemacht werden?", vbYesNo) = 6 Then ' Die 6 steht für die Zeile 6
Application.OnTime Now + TimeSerial(0, 0, 2), "naechste_spalte"
End If
Else
Application.OnTime Now + TimeSerial(0, 0, 2), "naechste_spalte"
End If
End Sub
|