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:

  1. Gehe auf die Registerkarte Entwicklertools und wähle Makro aufzeichnen
  2. Vergib einen Namen (z.B. “FormatiereBericht”) und optional eine Tastenkombination
  3. Wähle, wo das Makro gespeichert werden soll: nur in dieser Arbeitsmappe oder in der persönlichen Makroarbeitsmappe
  4. Klicke OK und führe alle Schritte aus, die automatisiert werden sollen
  5. 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:

  1. Wähle ExtrasMakrosMakro aufzeichnen
  2. Führe die gewünschten Aktionen aus
  3. Klicke auf Aufzeichnung stoppen
  4. 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:

MethodeBeschreibung
TastenkombinationFalls beim Aufzeichnen definiert (z.B. Strg+Shift+F)
Makro-ListeEntwicklertools → Makros → Makro auswählen → Ausführen
Button im SheetSchaltfläche einfügen und mit Makro verknüpfen
SchnellzugriffsleisteMakro 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?

AufgabeNutze…Warum?
Berechnungen (Summe, Durchschnitt)Excel-FormelnInstant-Berechnung, User sieht Logik
Daten filtern/sortierenExcel-FeaturesIntuitiv, kein Button nötig
Wiederholte FormatierungenMakroSpart Zeit, ein Klick
Daten aus mehreren Dateien importierenMakro/VBAExcel kann das nicht automatisch
User-Formulare (Eingabedialoge)VBAInteraktive User-Experience

Faustregel: Wenn Excel es automatisch kann, nutze Excel-Features. Wenn du manuelle Wiederholungen automatisieren willst, nutze Makros.

⏳ Lädt Dataview-Inhalt...

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 Sub

Was passiert hier?

AspektErklärung
Sub HelloWorld()Definiert ein Makro namens “HelloWorld”
MsgBox "Hallo Welt"Zeigt ein Dialogfenster mit dem Text an
End SubBeendet 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 Sub

Warum Option Explicit? Ohne diese Anweisung erzeugt VBA automatisch neue Variablen bei Tippfehlern. Das führt zu schwer findbaren Bugs.

Wichtige VBA-Datentypen:

TypBeschreibungBeispiel
StringText”Hallo”
IntegerGanzzahl (-32.768 bis 32.767)42
LongGroße Ganzzahl1000000
DoubleDezimalzahl19.99
BooleanWahrheitswertTrue, False
DateDatum/Zeit2025

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 Sub

Wie 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 Sub

Wie 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 Function

Erklä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):

StufeBeschreibung
Alle deaktivierenHöchste Sicherheit, keine Makros
Mit BenachrichtigungStandard: gelbe Leiste fragt nach Aktivierung
Nur signierteEmpfohlen 2025: Nur digital signierte Makros erlauben
Alle aktivierenUnsicher, 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)
EinsatzzweckEmpfehlung
Desktop-AutomationVBA
Cloud/Teams/SharePointOffice Scripts
DatenanalysePython 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
AspektErklärung
ScreenUpdating = FalseDeaktiviert Bildschirmaktualisierung (massiver Geschwindigkeitsgewinn)
Calculation = xlCalculationManualStoppt automatische Neuberechnung während des Makros
Am Ende wieder aktivierenWichtig, 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 Sub

3. Weitere Best Practices:

  • Kommentiere komplexe Logik
  • Verwende aussagekräftige Variablennamen
  • Vermeide Select und Activate (direkte Zellreferenzen nutzen)
  • Teste Makros immer mit Kopien deiner Daten
⏳ Lädt Dataview-Inhalt...

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.