Makro-Programmierung und Automatisierung
In dieser Lerneinheit entdeckst du die Grundlagen der Makro-Programmierung und lernst, wie du wiederkehrende Arbeitsabläufe in Tabellenkalkulationen automatisieren kannst. Du erfährst, wie Makros aufgezeichnet, bearbeitet und ausgeführt werden, wodurch sich zeitaufwändige Routineaufgaben mit wenigen Klicks erledigen lassen. Die erworbenen Kenntnisse helfen dir dabei, Arbeitsprozesse effizienter zu gestalten und Fehlerquellen bei regelmäßig durchgeführten Tabellenoperationen zu minimieren.
Einführung
Jeden Freitag derselbe Ablauf: Report öffnen, Daten kopieren, Spalten formatieren, Überschriften fett setzen, Rahmen ziehen. 15 Minuten für etwas, das du im Schlaf könntest.

Doch was wäre, wenn du diese 15 Minuten auf einen einzigen Klick reduzieren könntest?
Makros ermöglichen genau das: Du zeichnest einmal auf, was du tust, und lässt es danach automatisch wiederholen.
In dieser Lerneinheit erfährst du, wie du Makros aufzeichnest und ausführst, wie du mit VBA eigene Automatisierungen programmierst und worauf du bei der Sicherheit achten musst.
Lernziele
Nach dieser Lerneinheit kannst du:
- Makros in Excel und LibreOffice Calc aufzeichnen und ausführen
- Die Grundlagen von VBA verstehen: Variablen, Kontrollstrukturen und Schleifen
- Benutzerdefinierte Funktionen (UDFs) erstellen und in Excel-Zellen nutzen
- Makro-Sicherheitsrisiken einschätzen und Best Practices anwenden
- Moderne Alternativen zu VBA (Office Scripts, Python) einordnen
Überleitung
Um wiederkehrende Aufgaben zu automatisieren, brauchst du zunächst das richtige Werkzeug: den Makro-Recorder.
Er zeichnet jeden Klick und jede Eingabe auf, die du machst, und speichert sie als ausführbares Skript.
Was ist ein Makro?
Ein Makro ist eine aufgezeichnete Abfolge von Befehlen und Aktionen, die du jederzeit per Knopfdruck wiederholen kannst.
Typische Einsatzgebiete:
- Formatierungen anwenden: Schriftart, Farben, Rahmen auf viele Zellen gleichzeitig
- Daten aktualisieren: Importe, Bereinigungen, Umstrukturierungen
- Berichte generieren: Auswertungen erstellen und verteilen
- Sortieren und Filtern: Komplexe Filterlogik mit einem Klick
Makros sparen Zeit und reduzieren Fehler, weil sie immer exakt dieselben Schritte ausführen.
Makro aufzeichnen in Excel
So zeichnest du ein Makro in Excel auf:
- Gehe auf die Registerkarte Entwicklertools und wähle Makro aufzeichnen
- Vergib einen Namen (z.B. “FormatiereBericht”) und optional eine Tastenkombination
- Wähle, wo das Makro gespeichert werden soll: nur in dieser Arbeitsmappe oder in der persönlichen Makroarbeitsmappe
- Klicke OK und führe alle Schritte aus, die automatisiert werden sollen
- Klicke auf Aufzeichnung beenden
Tipp: Aktiviere die Entwicklertools über Datei → Optionen → Menüband anpassen → Entwicklertools aktivieren.
Makro aufzeichnen in LibreOffice Calc
So zeichnest du ein Makro in LibreOffice Calc auf:
- Wähle Extras → Makros → Makro aufzeichnen
- Führe die gewünschten Aktionen aus
- Klicke auf Aufzeichnung stoppen
- Vergib einen Namen und speichere das Makro
Wichtiger Hinweis: LibreOffice nutzt LibreOffice Basic, nicht VBA. Die Syntax ähnelt VBA, ist aber nicht identisch. Die VBA-Code-Beispiele in dieser Lerneinheit funktionieren nur in Excel, nicht direkt in LibreOffice Calc.
Wenn du LibreOffice nutzt, verwende den Makro-Recorder, um die korrekte Basic-Syntax zu sehen.
Makro ausführen
Es gibt mehrere Wege, ein aufgezeichnetes Makro auszuführen:
| Methode | Beschreibung |
|---|---|
| Tastenkombination | Falls beim Aufzeichnen definiert (z.B. Strg+Shift+F) |
| Makro-Liste | Entwicklertools → Makros → Makro auswählen → Ausführen |
| Button im Sheet | Schaltfläche einfügen und mit Makro verknüpfen |
| Schnellzugriffsleiste | Makro als Icon in der Symbolleiste |
Die Tastenkombination ist am schnellsten, aber nicht jeder merkt sie sich. Ein Button im Sheet ist intuitiver für andere Nutzer.
Wichtige Hinweise zur Makro-Nutzung
Vor dem produktiven Einsatz beachten:
- Testlauf: Führe das Makro zunächst in einer Kopie der Datei aus, um unerwartete Ergebnisse zu vermeiden
- Keine intelligente Fehlerbehandlung: Aufgezeichnete Makros führen nur die aufgezeichneten Schritte aus. Wenn sich die Datenstruktur ändert (z.B. mehr Zeilen), kann das Makro falsch arbeiten
- Sicherheit: Makros können auch schädlichen Code enthalten. Aktiviere Makros nur aus vertrauenswürdigen Quellen
Hinweis: Für robuste Automatisierungen mit Fehlerbehandlung musst du VBA-Code manuell schreiben. Das lernst du im nächsten Abschnitt.
Aufgezeichneten Code verbessern
Der Makro-Recorder erzeugt oft ineffizienten Code mit vielen .Select und .Activate Befehlen:
' Aufgezeichneter Code (langsam)
Range("A1").Select
Selection.Value = "Test"
Range("B1").Select
Selection.Value = "Test2"' Verbesserter Code (schnell)
Range("A1").Value = "Test"
Range("B1").Value = "Test2"Warum ist das besser?
- Schneller: Keine visuellen Auswahl-Aktionen
- Lesbarer: Weniger Code, klarer Intent
- Robuster: Funktioniert auch wenn ein anderes Sheet aktiv ist
Tipp: Nutze den Makro-Recorder zum Lernen der Syntax, entferne aber .Select und .Activate im finalen Code.
Anwendungsbeispiel: Report automatisch formatieren
Ein typisches Makro könnte einen wöchentlichen Report automatisch formatieren:
- Zeilenhöhe und Spaltenbreite anpassen
- Überschriftenzeile fett setzen und mit Hintergrundfarbe versehen
- Rahmenlinien um den Datenbereich ziehen
- Zahlen als Währung formatieren
- Kopf- und Fußzeilen für den Druck hinzufügen
Ohne Makro: 10-15 Minuten manuelle Arbeit.
Mit Makro: Ein Klick, fertig in Sekunden.
Wichtig: Makros sind ideal für immer gleiche Abläufe. Sobald Logik oder Entscheidungen nötig sind (“wenn Spalte B leer, dann…”), brauchst du VBA-Programmierung.
Wann Makros, wann Excel-Formeln?
Bevor du ein Makro schreibst: Kann Excel das schon mit Formeln?
| Aufgabe | Nutze… | Warum? |
|---|---|---|
| Berechnungen (Summe, Durchschnitt) | Excel-Formeln | Instant-Berechnung, User sieht Logik |
| Daten filtern/sortieren | Excel-Features | Intuitiv, kein Button nötig |
| Wiederholte Formatierungen | Makro | Spart Zeit, ein Klick |
| Daten aus mehreren Dateien importieren | Makro/VBA | Excel kann das nicht automatisch |
| User-Formulare (Eingabedialoge) | VBA | Interaktive User-Experience |
Faustregel: Wenn Excel es automatisch kann, nutze Excel-Features. Wenn du manuelle Wiederholungen automatisieren willst, nutze Makros.
Einführung in VBA
VBA steht für Visual Basic for Applications. Es ist eine Programmiersprache, die in Microsoft Office-Anwendungen integriert ist und dir ermöglicht, über das hinaus zu automatisieren, was der Makro-Recorder kann.
Mit VBA kannst du:
- Entscheidungslogik einbauen (“wenn X, dann Y”)
- Schleifen über Datenmengen laufen lassen
- Eigene Funktionen erstellen (UDFs)
- Fehlerbehandlung implementieren
- Benutzerformulare gestalten
Den VBA-Editor öffnest du mit: Alt + F11
Dort siehst du den Projektexplorer (links) und den Code-Bereich (rechts). Dein VBA-Code wird in Modulen gespeichert: Einfügen → Modul.
Erstes VBA-Makro
Dein erstes eigenes VBA-Makro zeigt die Grundstruktur:
Sub HelloWorld()
MsgBox "Hallo Welt"
End SubWas passiert hier?
| Aspekt | Erklärung |
|---|---|
Sub HelloWorld() | Definiert ein Makro namens “HelloWorld” |
MsgBox "Hallo Welt" | Zeigt ein Dialogfenster mit dem Text an |
End Sub | Beendet das Makro |
Ausführung: Nach dem Speichern kannst du das Makro über Alt+F8 ausführen. Du siehst dann ein Dialogfenster mit “Hallo Welt”.
Tipp: Benenne deine Makros aussagekräftig. Statt Sub Makro1() besser Sub FormatiereBericht() verwenden.
Variablen und Datentypen
VBA verwendet typisierte Variablen für die Datenspeicherung.
Option Explicit: Setze diese Anweisung an den Anfang jedes Moduls:
Option Explicit
Sub VariableDemo()
Dim greeting As String
Dim count As Integer
Dim total As Double
greeting = "Willkommen"
count = 42
total = 19.99
MsgBox greeting & " - Anzahl: " & count
End SubWarum Option Explicit? Ohne diese Anweisung erzeugt VBA automatisch neue Variablen bei Tippfehlern. Das führt zu schwer findbaren Bugs.
Wichtige VBA-Datentypen:
| Typ | Beschreibung | Beispiel |
|---|---|---|
| String | Text | ”Hallo” |
| Integer | Ganzzahl (-32.768 bis 32.767) | 42 |
| Long | Große Ganzzahl | 1000000 |
| Double | Dezimalzahl | 19.99 |
| Boolean | Wahrheitswert | True, False |
| Date | Datum/Zeit | 2025 |
Kontrollstrukturen: Entscheidungen und Schleifen
Mit Kontrollstrukturen reagierst du auf unterschiedliche Situationen:
Sub CheckValue()
Dim number As Integer
number = 10
If number > 5 Then
MsgBox "Die Zahl ist größer als 5."
Else
MsgBox "Die Zahl ist 5 oder kleiner."
End If
End SubWie funktioniert If-Then-Else? Die Bedingung number > 5 wird geprüft. Ist sie wahr, wird der erste Block ausgeführt, sonst der Else-Block.
Sub CountToTen()
Dim i As Integer
For i = 1 To 10
MsgBox "Zahl: " & i
Next i
End SubWie funktioniert die For-Schleife? Die Variable i zählt von 1 bis 10. Bei jedem Durchlauf wird der Code zwischen For und Next ausgeführt. Das & verbindet Text mit der Zahl.
Benutzerdefinierte Funktionen (UDFs)
UDFs (User-Defined Functions) sind eigene Funktionen, die du wie eingebaute Excel-Funktionen in Zellen nutzen kannst:
Function SummeZweierZahlen(Zahl1 As Double, Zahl2 As Double) As Double
SummeZweierZahlen = Zahl1 + Zahl2
End FunctionErklärung des Codes
Was ist der Unterschied zu Sub? Eine Function gibt einen Wert zurück, eine Sub nicht. Der Rückgabewert wird durch Funktionsname = Ergebnis festgelegt.
Wie nutzt du die UDF in Excel? Gib in eine Zelle ein: =SummeZweierZahlen(A1, B1)
Wichtige Einschränkungen von UDFs:
- Können keine anderen Zellen verändern (nur berechnen)
- Können keine Dialogboxen (MsgBox) anzeigen
- Werden bei jeder Sheet-Änderung neu berechnet
UDFs sind perfekt für komplexe Berechnungen, die du oft brauchst.
Makro-Sicherheit
Makros können auch schädlichen Code enthalten. Beachte daher folgende Sicherheitsmaßnahmen:
Makro-Sicherheitsstufen (Trust Center):
| Stufe | Beschreibung |
|---|---|
| Alle deaktivieren | Höchste Sicherheit, keine Makros |
| Mit Benachrichtigung | Standard: gelbe Leiste fragt nach Aktivierung |
| Nur signierte | Empfohlen 2025: Nur digital signierte Makros erlauben |
| Alle aktivieren | Unsicher, nicht empfohlen |
Digitale Signierung: Professionelle Makros sollten mit einem Zertifikat signiert sein. Die Signatur garantiert Herkunft und Integrität.
“Mark of the Web” (MOTW): Seit 2022 zeigt Excel eine pinke Warnung bei Makros aus dem Internet. Zum Entsperren: Rechtsklick auf Datei → Eigenschaften → “Zulassen” aktivieren.
Trusted Locations: Für eigene, häufig genutzte Makros kannst du vertrauenswürdige Ordner definieren.
VBA und moderne Alternativen (2025)
VBA ist seit über 25 Jahren der Standard für Excel-Automation. Für 2025 gibt es jedoch wichtige Entwicklungen:
VBA-Limitation: Funktioniert nicht in Excel Online, Teams oder SharePoint. Nur Desktop (Windows/Mac).
Office Scripts (Cloud-Alternative):
- Programmiersprache: TypeScript
- Funktioniert in: Excel Online, Desktop, Mac
- Ideal für: Cloud-basierte Automation, Power Automate Integration
Python in Excel (seit 2024/2025):
- Nativ in Microsoft 365 integriert
- Ideal für: Datenanalyse, Machine Learning, Visualisierungen
- Nicht geeignet für: Workbook-Automation (kann keine Sheets erstellen)
| Einsatzzweck | Empfehlung |
|---|---|
| Desktop-Automation | VBA |
| Cloud/Teams/SharePoint | Office Scripts |
| Datenanalyse | Python in Excel |
| Cross-Office (Word, Outlook) | VBA |
Tipp: VBA bleibt relevant, aber schau dir auch Office Scripts an, wenn du mit Teams/SharePoint arbeitest.
VBA Best Practices
Professionelle VBA-Entwicklung folgt bewährten Mustern:
1. Performance-Optimierung:
Sub OptimiertesMakro()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim i As Long
For i = 1 To 10000
Cells(i, 1).Value = i * 2
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub| Aspekt | Erklärung |
|---|---|
ScreenUpdating = False | Deaktiviert Bildschirmaktualisierung (massiver Geschwindigkeitsgewinn) |
Calculation = xlCalculationManual | Stoppt automatische Neuberechnung während des Makros |
| Am Ende wieder aktivieren | Wichtig, sonst bleibt Excel in diesem Zustand |
2. Fehlerbehandlung:
Sub MakroMitErrorHandling()
On Error GoTo ErrorHandler
Dim result As Double
result = 10 / 0
Exit Sub
ErrorHandler:
MsgBox "Fehler: " & Err.Description
End Sub3. Weitere Best Practices:
- Kommentiere komplexe Logik
- Verwende aussagekräftige Variablennamen
- Vermeide Select und Activate (direkte Zellreferenzen nutzen)
- Teste Makros immer mit Kopien deiner Daten
Zusammenfassung und Ausblick
Zusammenfassung
In dieser Lerneinheit hast du die Grundlagen der Makro-Programmierung und Automatisierung in Tabellenkalkulationen kennengelernt. Du hast erfahren, wie der Makro-Recorder Arbeitsschritte aufzeichnet und in ausführbaren Code umwandelt. Dabei ist wichtig zu verstehen, dass der Recorder zwar einen guten Einstieg bietet, der generierte Code aber oft optimiert werden sollte: Select- und Activate-Anweisungen sind in der Regel überflüssig und verlangsamen die Ausführung.
Mit VBA (Visual Basic for Applications) hast du eine mächtige Programmiersprache kennengelernt, die weit über einfache Aufzeichnungen hinausgeht. Du weißt nun, wie du Variablen mit korrekten Datentypen deklarierst und warum Option Explicit am Anfang jedes Moduls stehen sollte: Es verhindert Tippfehler, die sonst zu schwer findbaren Bugs führen. Kontrollstrukturen wie If-Then-Else und For-Schleifen ermöglichen dir, komplexe Logik abzubilden.
Besonders praktisch sind benutzerdefinierte Funktionen (UDFs), die du direkt in Zellen verwenden kannst wie normale Excel-Funktionen. Damit erweiterst du den Funktionsumfang deiner Tabellenkalkulation nach Bedarf.
Das Thema Sicherheit ist zentral: Makros können schädlichen Code enthalten. Du kennst nun die Sicherheitsstufen, verstehst das Mark-of-the-Web (MOTW) Konzept und weißt, wie Trusted Locations und digitale Signaturen Makros vertrauenswürdig machen. Diese Kenntnisse schützen dich und deine Organisation vor Malware.
Schließlich hast du moderne Alternativen kennengelernt: Office Scripts für Microsoft 365 und Python in Excel bieten zeitgemäße Ansätze zur Automatisierung. VBA bleibt für Legacy-Systeme und Desktop-Anwendungen relevant, aber für neue Projekte lohnt sich der Blick auf diese Technologien.
Ausblick
In der nächsten Lerneinheit “Praxisbeispiele und Projekte” wendest du dein Wissen in realen Szenarien an. Du wirst komplette Automatisierungsprojekte umsetzen, die mehrere der hier gelernten Konzepte kombinieren: Von der Datenaufbereitung über die Berichterstellung bis zur Integration mit anderen Office-Anwendungen.