Programmierung & Entwicklung
Excel VBA und Fortgeschritten: Makros mit Sinn
Excel VBA sinnvoll nutzen: Wann Makros statt Formeln, wie du saubere VBA-Lösungen schreibst und Alternativen wie Power Query einschätzt.
KI-generiert Wenn du in Excel mehr Zeit mit wiederkehrenden Klicks verbringst als mit eigentlicher Arbeit, bist du ein Kandidat für VBA. Aber nicht jede Aufgabe braucht gleich ein Makro, und nicht jedes Makro gehört in VBA-Code gegossen. Entscheidend ist, dass du weißt, wann Formeln reichen, wann ein aufgezeichnetes Makro genügt und wann du wirklich programmieren solltest.
Wann Formeln reichen und wann VBA sinnvoll ist
VBA ist mächtig, aber auch fehleranfällig und wartungsintensiv. Bevor du ein Makro schreibst, prüfe, ob du mit Bordmitteln auskommst.
Typische Fälle, in denen Formeln und Standardfunktionen reichen:
- Berechnungen innerhalb einer Tabelle, auch komplexe Verschachtelungen mit WENN, SVERWEIS bzw. XVERWEIS, INDEX/VERGLEICH
- Dynamische Auswertungen mit PivotTables und Filtern
- Einfache Datenbereinigung wie Duplikate entfernen, Text in Spalten, Sortieren
- Berichte, bei denen du „nur“ Filter setzt und Pivot-Layouts anpasst
VBA lohnt sich, wenn mindestens eines der folgenden Kriterien erfüllt ist:
- Du wiederholst denselben Klick-Ablauf täglich oder wöchentlich.
- Du arbeitest nacheinander mit mehreren Dateien oder Blättern, die gleich behandelt werden sollen.
- Du musst Schritte ausführen, die Excel-Formeln nicht oder nur extrem umständlich abbilden können, etwa:
- Dateien aus einem Ordner einlesen
- E-Mails aus Outlook verarbeiten
- Formatierungen und Layouts in vielen Blättern vereinheitlichen
Praxisbeispiel: Du bekommst jeden Morgen eine CSV-Datei vom Systemexport, die du immer gleich aufbereitest: Spalten löschen, Datumsformat umstellen, Pivot aktualisieren, als XLSX speichern. Das sind 10 bis 20 Klicks, jeden Tag. Hier ist VBA perfekt: Einmal sauber automatisieren, dann per Knopfdruck erledigen.
Makro aufzeichnen oder selbst schreiben?
Excel bietet zwei Wege zum Makro:
- Makroaufzeichnung
- Manuell schreiben im VBA-Editor
Beides hat seine Berechtigung, aber für unterschiedliche Zwecke.
Wann Makros aufzeichnen sinnvoll ist
Aufzeichnen eignet sich gut, wenn:
- du einen linearen Ablauf von Klicks hast, der sich selten ändert
- du schnell einen Prototypen brauchst
- du herausfinden willst, wie Excel eine bestimmte Aktion in VBA „nennt“
Beispiel: Du möchtest, dass ein Button eine bestimmte Tabelle formatiert, Filter setzt und eine Pivot aktualisiert. Das kannst du einmal per Hand machen und dabei aufzeichnen. Den generierten Code kannst du später noch aufräumen.
Grenzen der Aufzeichnung:
- Der Recorder arbeitet mit absoluten Adressen, etwa „Range(‚A1‘).Select“. Für flexible Lösungen willst du aber eher mit Variablen, Schleifen und relativen Bezügen arbeiten.
- Es gibt keine „Wenn, dann“-Logik, keine Schleifen, keine Fehlerbehandlung.
- Der Code ist meist überladen, mit vielen Select- und Activate-Anweisungen, die du nicht brauchst.
Ein guter Ansatz: Erst aufzeichnen, dann den Code im Editor öffnen, verstehen und schrittweise vereinfachen.
Wann du von Hand schreiben solltest
Sobald dein Makro:
- auf wechselnde Datenmengen reagieren soll
- Entscheidungen treffen muss, also „wenn dies, dann das“
- mehrere Dateien oder Blätter in einer Schleife bearbeiten soll
- robust gegen Fehler sein soll
musst du in den Editor und selbst schreiben.
Beispiele:
- Alle Dateien in einem Ordner öffnen, Daten zusammenführen und eine Gesamtauswertung erstellen.
- In allen Blättern einer Arbeitsmappe die gleichen Kopfzeilen und Formatierungen setzen.
- Nur dann eine Aktion ausführen, wenn eine bestimmte Datei existiert oder eine Zelle einen bestimmten Wert hat.
Schleifen: Das Herzstück sinnvoller Makros
Ohne Schleifen bleibst du bei VBA schnell stecken. Schleifen erlauben dir, wiederkehrende Aktionen programmatisch zu steuern, statt sie in 100 Zeilen zu duplizieren.
Die wichtigsten Schleifentypen in Excel VBA:
- For Each Schleife: eignet sich für Sammlungen, etwa alle Blätter in einer Mappe oder alle Zellen in einem Bereich.
- For Schleife mit Zähler: gut für definierte Bereiche, etwa Zeilen 2 bis 1000.
- Do While / Do Until: für wiederkehrende Abläufe, bei denen du nicht von Anfang an weißt, wie oft sie ausgeführt werden müssen.
Praktische Szenarien:
- Du möchtest alle Blätter, deren Name mit „Report“ beginnt, in eine PDF-Datei exportieren.
- Du willst in einer Liste alle Zeilen löschen, in denen ein bestimmter Status steht.
- Du musst eine Tabelle zeilenweise durchgehen, solange in einer Spalte ein Wert steht.
Gedankliche Checkliste für eine Schleife:
- Worüber iterierst du? Blätter, Zeilen, Dateien, Zellen?
- Was ist die Abbruchbedingung? Bestimmte letzte Zeile, bestimmte Anzahl, leere Zelle?
- Was soll in jedem Schleifendurchlauf passieren?
Wenn du das klar hast, ist der eigentliche VBA-Code meist deutlich kürzer als der entsprechende Klick-Marathon im Excel-Interface.
Fehlerbehandlung: Warum Makros sonst im falschen Moment abstürzen
Viele VBA-Beispiele im Netz ignorieren Fehlerbehandlung komplett. Das rächt sich spätestens dann, wenn:
- eine Datei nicht existiert
- ein Blatt umbenannt wurde
- die Datenstruktur sich minimal geändert hat
Ohne Fehlerbehandlung bricht das Makro ab und der Nutzer bleibt mit einer kryptischen Meldung sitzen.
Grundprinzipien guter Fehlerbehandlung:
- Antizipiere typische Fehlerquellen und prüfe sie vor dem Zugriff, etwa:
- Existiert das Blatt?
- Ist die Datei geöffnet oder vorhanden?
- Ist die Zelle nicht leer, bevor du ihren Inhalt weiterverarbeitest?
- Nutze eine zentrale Fehlerbehandlung, die:
- eine verständliche Meldung für den Nutzer liefert
- aufräumt, z. B. temporäre Dateien oder geöffnete Verbindungen schließt
- das Makro sauber beendet oder einen sinnvollen Fallback wählt
Selbst einfache Prüfungen erhöhen die Stabilität enorm. Beispiel: Bevor du ein Tabellenblatt ansprichst, gehst du die Blätter durch und prüfst, ob eines den erwarteten Namen hat. Falls nicht, brichst du mit einer klaren Meldung ab wie „Blatt ‚Daten‘ nicht gefunden, bitte Datei prüfen“.
Wichtig ist auch, Fehler nicht still zu „schlucken“. Ein Makro, das kommentarlos „durchläuft“, aber nichts tut, weil intern Fehler auftraten, ist in der Praxis schlimmer als eines, das sauber mit Meldung stoppt.
Grenzen von VBA: Wann du besser etwas anderes nutzt
So viel Spaß VBA machen kann, Excel ist keine Allzweck-Entwicklungsumgebung. Einige Grenzen solltest du kennen:
- Performance: Schleifen über zehntausende Zeilen können sehr langsam werden, wenn du Zelle für Zelle bearbeitest. Hier hilft es zwar, mit Arrays im Speicher zu arbeiten, aber irgendwann ist Excel einfach nicht mehr das passende Werkzeug.
- Parallelität: VBA ist in Excel im Wesentlichen Single-Thread. Lange laufende Makros blockieren die Oberfläche.
- Sicherheit: Makros können deaktiviert sein oder von der IT in Unternehmen streng reglementiert werden. In vielen Münchner Unternehmen laufen Excel-Dateien mit Makros nur eingeschränkt.
- Zukunftssicherheit: VBA ist zwar noch weit verbreitet, aber Microsoft entwickelt eher in Richtung Office-Skripte, Power Query und Power Automate weiter.
Wenn du an diese Grenzen kommst, solltest du Alternativen einplanen, statt immer mehr Logik in ein einzelnes Excel-File zu pressen.
Power Query als Alternative zur VBA-Datenaufbereitung
Für viele Aufgaben, für die früher VBA Standard war, ist heute Power Query besser geeignet, vor allem im Bereich Datenimport und -bereinigung.
Typische Einsatzfälle für Power Query:
- Daten aus CSV, Text, Datenbanken oder anderen Arbeitsmappen einlesen
- Spalten umbenennen, Datentypen setzen, filtern, sortieren
- Tabellen zusammenführen, etwa mehrere Monatsdateien zu einer Jahrestabelle
- Pivot-ähnliche Aggregationen als „Abfrage“ definieren, die du nur noch aktualisieren musst
Vorteile von Power Query gegenüber VBA:
- Deklarativer Ansatz: Du beschreibst, was passieren soll, nicht, wie der Ablauf im Detail ist.
- Wiederholbarkeit: Eine definierte Abfrage lässt sich per Klick aktualisieren, ohne dass du Makro-Sicherheitseinstellungen anfassen musst.
- Weniger anfällig für Tippfehler und versteckte Seiteneffekte, weil Transformationsschritte klar sichtbar sind.
Wo VBA trotzdem besser ist:
- Wenn du mit der Benutzeroberfläche interagieren musst, etwa gezielt bestimmte Zellen auswählen, Buttons steuern oder Dialogfenster anzeigen.
- Wenn du andere Office-Anwendungen ansteuern willst, z. B. Outlook automatisieren, Serienmails mit individuellem Inhalt erzeugen.
- Wenn du komplexe Geschäftslogik mit vielen Bedingungen und Sonderfällen abbilden musst.
Ein häufig sinnvoller Mix: Power Query für alle Datenimporte und Bereinigungen, VBA für die finale Berichtslogik, Steuerung der UI und das Zusammenspielen mehrerer Dateien.
Praxisbeispiele: Sinnvolle Makros im Arbeitsalltag
Zum Abschluss ein paar typische Szenarien, bei denen VBA im Alltag wirklich hilft.
Wiederkehrende Monatsberichte
Du bekommst jeden Monat Dateien aus verschiedenen Abteilungen. Deine Schritte bisher:
- Dateien öffnen
- Daten in eine gemeinsame Tabelle kopieren
- Spalten anpassen, unnötige Spalten löschen
- Pivot aktualisieren
- Diagramme aktualisieren und als PDF exportieren
Mit VBA kannst du:
- alle Dateien in einem bestimmten Ordner automatisiert einlesen
- eine zentrale Datentabelle befüllen
- Pivot-Tabellen und Diagramme aktualisieren
- einen PDF-Export mit definiertem Dateinamen erzeugen
So reduzierst du eine halbe Stunde Fleißarbeit auf einen Buttonklick.
Berichte für mehrere Regionen oder Filialen
Du hast eine Standard-Auswertung, die für jede Region oder Filiale separat erstellt werden muss. Statt jede Region einzeln zu filtern und zu exportieren, kannst du:
- eine Liste aller Regionen aus der Datentabelle auslesen
- mit einer Schleife jede Region nacheinander filtern
- für jede Region ein eigenes Blatt oder eine eigene Datei erzeugen
- optional für jede Region ein PDF ablegen
Hier verbinden sich Schleifen, einfache Logik und klar definierte Ausgabeschritte zu einem Makro, das dir sehr viel Routinearbeit abnimmt.
Qualitätssicherung von Eingabedaten
Du erhältst regelmäßig Excel-Dateien von Kollegen oder externen Partnern. Die Daten sind oft fehlerhaft oder unvollständig. Ein VBA-Makro kann:
- Pflichtspalten prüfen und bei fehlenden Werten eine Liste der Probleme ausgeben
- Plausibilitätschecks durchführen, etwa Datumsbereiche, Zahlenbereiche
- problematische Zeilen farbig markieren oder in ein separates Blatt auslagern
Das spart dir nicht nur Zeit, sondern erhöht auch die Datenqualität, bevor du weitere Auswertungen startest.
Wie du sinnvoll mit Excel VBA weiterkommst
VBA lernst du am besten an deinen eigenen Problemen, nicht an künstlichen Beispielen. Such dir eine Aufgabe, die dich wirklich nervt, und automatisiere sie schrittweise:
- Abläufe genau beobachten und aufschreiben.
- Einfache Schritte zunächst mit dem Makrorekorder aufnehmen.
- Den Code im Editor öffnen, verstehen und vereinfachen.
- Wo nötig Schleifen und einfache Prüfungen ergänzen.
- Eine minimale Fehlerbehandlung einbauen, damit das Makro nicht beim ersten Sonderfall abstürzt.
Wenn du tiefer einsteigen willst, lohnt sich strukturierter Unterricht, gerade für Themen wie saubere Code-Struktur, Modulaufbau und professionelle Fehlerbehandlung. Präsenzschulungen in München oder Online-Kurse kannst du gut über einen erfahrenen Anbieter planen, aktuelle Termine und passende Kurse findest du bei cmt.de.
Am Ende zählt nicht, dass du „VBA kannst“, sondern dass deine Makros zuverlässig laufen, dir Arbeit abnehmen und deine Kollegen sie auch noch in einem Jahr verstehen.
Nächster Schritt
Passenden Kurs zu Programmierung finden.
Feste Termine, erfahrene Trainer, Präsenz in München und Durchführungsgarantie. Buchen kannst du direkt auf cmt.de.