Makrorecorder einsetzen

Makrorecorder einsetzen. Mit Recorder aufzeichnen und Makro in Schleife abspielen
Oftmals ist es erforderlich, den gleichen Vorgang an einer Gruppe von Elementen auszuführen. Bei diesen Elementen kann es sich um Zellen in Bereichen, Tabellenblättern in Arbeitsmappen oder Arbeitsmappen in Anwendungen handeln.
Wenn der Makro-Recorder auch keine Schleifen aufzeichnen kann, so kann dieser doch für die Aufzeichnung der Hauptaufgabe für spätere Wiederholungen angewendet werden. Mit nur kleinen Änderungen des aufgezeichneten Codes können dann verschiedene Schleifen für spezielle Projekte erstellt werden.
Das unten aufgeführte Beispiel bezieht sich auf ein Szenario, bei dem der Programmierer einen Zellenbereich in Spalte A mit Zahlen vorliegen hat und abhängig von dem Zahlenwert die Farbe in der entsprechenden Spalte B ändern möchte.
Als erstes kann der Einzelvorgang für die Änderung des Farbhintergrundes einer Zelle aufgezeichnet werden:
Während der nun aktivierten Aufzeichnung wählen Sie auf der Menüleiste 'Format' und klicken Sie auf 'Zellen'. Wählen Sie das Register 'Muster' und bestimmen Sie eine Farbe. Im Beispiel wird Gelb (.ColorIndex=6) verwendet. Klicken Sie auf der Symbolleiste Aufzeichnen die Symbolleistenschaltfläche 'Aufzeichnung beenden', um die Makroaufzeichnung zu beenden.
Sub Recorded_Macro()
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub
Hinweis: Sofern Sie während dem Aufzeichnungsvorgang eine Zelle ausgewählt haben, kann Ihr Makro einen Eintrag wie z.B. Range("A3").Select anzeigen. Eventuell möchten Sie diesen Code entfernen, da ansonsten die Ausführung des Markos jedes Mal dazu führt, diesen Bereich auszuwählen.
Nunmehr kann der Code geändert und eine der verschiedenen Schleifenstrukturen dem aufgezeichneten Code hinzugefügt werden.
Sofern der Zellbereich für die Anwendung des aufgezeichneten Codes bekannt ist, kann die For Each…Next-Schleife angewendet werden.
In diesem Beispiel soll eine Zelle in Spalte B nur dann betroffen werden, wenn der Wert in Zelle A größer als 20 ist. Um dieses zu erreichen, fügen wir eine If-Anweisung der aufgezeichneten With-Anweisung hinzu. Somit wird nur dann die Hintergrundfarbe verändert, wenn die Bedingungsanweisung wahr ist.
Da sich die Zelle, die verändert werden soll, rechts von Zelle A befindet (in Spalte B), muss die Markierungs-Eigenschaft im aufgezeichneten Code durch die Offset-Methode des Objektes 'Zelle_in_der_Schleife' ersetzt werden.
Sub For_Each_Next_Sample()
For Each Zelle_in_der_Schleife In Range("A1:A5")
If Zelle_in_der_Schleife.Value > 20 Then
With Zelle_in_der_Schleife.Offset(0, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub
Wenn Ihnen bekannt ist, wie oft eine Schleife ausgeführt werden soll, können Sie die For...Next-Schleife anwenden. Möchten Sie lediglich einen Bereich von 10 Zellen nach unten, beginnend mit der aktivierten Zelle, prüfen, wird der geänderte aufgezeichnete Makro (Code) wie folgt aussehen:
Sub For_Next_Sample()
For Counter = 0 To 9
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub
Hier wird das Objekt 'Selection' verwendet, wobei sich der Code auf keinen bereits festgelegten Bereich bezieht, durchläuft jedoch zehn Schleifen (0 bis 9 als Counter) und wird auf die Zellen unterhalb der aktiven Zellen angewendet. Die Counter-Variable erhöht sich mit jedem Durchlauf der Schleife und kann innerhalb der Schleifenstruktur verwendet werden. In diesem Beispiel wurde die Variable als Offset-Argument verwendet, um anzugeben, wie viele Zeilen Abstand (Offset), von 'Selection' ausgehend (aktive Zelle), berücksichtigt werden sollen. Wird Zelle A1 als aktive Zelle ausgewählt und der Makro ausgeführt, nimmt die Counter-Variable den Wert 0 an mit dem Resultat, daß 0 Zeilen Abstand (Offset) genommen werden, wie auch mit der Anweisung Selection.Offset(Counter,0).Value festgelegt wurde.
Um festzulegen, ob ein Schleifendurchlauf mit der Erfüllung einer vorgegebenen Bedingung beendet werden soll oder nicht, erscheint der Befehl Do...Loop angebracht. Diese Schleifenstruktur erlaubt die Überprüfung von Eigenschaften oder Variablen vor der Ausführung einer Schleife. In dem nachstehenden Beispiel wird der Schleifendurchlauf fortgesetzt bis die Bezugszelle, Selection.Offset(Counter,0).Row die Zeile 100 überschritten hat. Diese Anwendung wäre vorteilhaft für den Fall, daß der Vorgang nach Erreichung der Zeile 100 nicht weiter angewendet wird.
Sub Do_Loop_Sample()
Counter = 0
Do Until Selection.Offset(Counter, 0).Row > 100
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Counter = Counter + 1
Loop

Mehr Tipps: Access - Unterformulare von mehreren Faktoren abhängig machen

Sponsoren und Investoren

Sponsoren und Investoren sind jederzeit herzlich willkommen!
Wenn Sie die Information(en) auf dieser Seite interessant fanden, freuen wir uns über eine kleine Spende. Empfehlen Sie uns bitte auch in Ihren Netzwerken (z. B. Twitter, Facebook oder Google+). Herzlichen Dank!

Nach oben Sitemap
Impressum & Kontakt