Makros - Aufzeichnen

Ein sehr guter Einstieg in die Automatisierungen mittels VBA (Visual Basic for Applications) bietet sich mit der Aufzeichnung von Makros an.

Hierbei muss man nur die Aufzeichnungstechnik finden und startet dann einen Makro Recorder. Dieser zeichnet bis zum Stoppen der Aufzeichnung die relevanten Aktionen auf.

Übung: Aufzeichnungen von Makros

Je nach Herangehensweise ergeben sich verschiedene Codes. Das Schöne an diesen Makroaufzeichnungen ist ihr Try and Error Charakter, der viel Raum für Freiheit und Erkenntnisse beim Ausprobieren bereit hält.

Tipp

Bei fehhlerhaften Makros bitte die Stopp-Taste des VBA-Editor klicken.

In den Seminaren erhalten die Trainees die passenden Tricks & Kniffe, um die Problemchen hierbei zu meistern. Insbesondere der Umgang mit Makros, die fehlerhaft unterbrechen wird trainiert.

Schauen wir uns einen ersten möglichen Quellcode eines Makros an.

Quellcode 1 Erste Makroaufzeichnung
 1Sub Transponieren01()
 2'
 3' Transponieren01 Makro
 4' einfaches Transponieren - Markieren mit Maus!
 5'
 6
 7'
 8    Range("A1:G4").Select
 9    Selection.Copy
10    Sheets("Tabelle2").Select
11    Range("A1").Select
12    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
13        False, Transpose:=True
14    Range("A1").Select
15End Sub

Beim Aufrufen dieses Makros wurden nur die einfachsten Dinge für die Erstellung eines Makros beachtet, sodass das Makro in vielen Fällen seine Arbeit verweigert.

In der nächsten Variante wird eine verbesserte Markierung des zu transponierenden Bereichs vorgenommen. So kann man beliebige Bereiche (Dimensionen von Zellen) sauber markieren.

Quellcode 2 Makroaufzeichnung mit verbesserter Markierungstechnik
 1Sub Transponieren02()
 2'
 3' Transponieren02 Makro
 4' jetzt mit intelligenter Tastenmarkierung
 5'
 6
 7'
 8    Range("A1").Select
 9    Range(Selection, Selection.End(xlToRight)).Select
10    Range(Selection, Selection.End(xlDown)).Select
11    Selection.Copy
12    Sheets("Tabelle2").Select
13    Range("A1").Select
14    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
15        False, Transpose:=True
16    Range("A1").Select
17End Sub

Und zum Schluss kann man die Ausgangssituation zu Beginn des Makros noch verbessern.

Quellcode 3 Makroaufzeichnung mit verbesserter Tabellenblattwahl
 1Sub Transponieren_03()
 2'
 3' Transponieren_03 Makro
 4' mit neuer Tabelle für Transponierung
 5'
 6
 7'
 8    Sheets("Tabelle1").Select
 9    Range("A1").Select
10    Range(Selection, Selection.End(xlToRight)).Select
11    Range(Selection, Selection.End(xlDown)).Select
12    Selection.Copy
13    Sheets.Add After:=Sheets(Sheets.Count)
14    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
15        False, Transpose:=True
16    Range("A1").Select
17    Application.CutCopyMode = False
18End Sub

Und hier wurde auch noch ein neues Tabellenblatt erzeugt, auf welchem dann der Tabellenbereich wieder eingefügt wurde.