Visual Basic for Applications – kurz VBA – steckt seit Jahrzehnten in Excel. Die Sprache wirkt auf den ersten Blick wie ein Relikt aus einer früheren Office-Welt. Trotzdem automatisiert sie noch immer einen erheblichen Teil wiederkehrender Auswertungen in Banken, Treuhandbüros, KMU und privaten Finanzhaushalten.
Wer sein Finanzleben in Excel organisiert und an die Grenzen klassischer Formeln stösst, begegnet früher oder später dem Begriff «Makro». Bevor man sich auf VBA einlässt, lohnt sich jedoch ein nüchterner Blick: Was kann die Sprache, was kann sie nicht – und ist VBA im Jahr 2026 noch die richtige Wahl?
Was VBA ist – und was nicht
Visual Basic for Applications ist eine Programmiersprache, die fest in den Microsoft-Office-Anwendungen verankert ist. In Excel öffnet sich der zugehörige Editor mit der Tastenkombination Alt + F11. Dort lassen sich kleine Programme schreiben – sogenannte Makros –, die Tabellen befüllen, Berechnungen ausführen, Dateien einlesen, Berichte erzeugen oder wiederkehrende Arbeitsschritte automatisieren.
Drei Eigenschaften prägen VBA besonders.
VBA ist eingebaut
Wer Excel auf dem Desktop nutzt, hat VBA in der Regel bereits dabei. Es braucht keine separate Entwicklungsumgebung, keine zusätzliche Installation und keine Cloud-Anbindung. Der Code wird direkt in der Excel-Datei gespeichert, mit ihr weitergegeben und kann auch offline ausgeführt werden.
Das ist im Finanzbereich ein praktischer Vorteil. Ein Hypothekenrechner, ein Steuerblatt oder eine Auswertung für Bankbewegungen kann als einzelne Datei funktionieren – ohne Server, ohne API und ohne laufendes Abonnement für eine Drittsoftware.
VBA steuert Excel direkt
VBA ist stark mit dem Excel-Objektmodell verbunden. Die Sprache selbst ist überschaubar; der eigentliche Hebel liegt darin, dass sie Excel direkt fernsteuert. Eine Zeile wie diese schreibt einen Wert in eine Zelle:
Range("B2").Value = 1000
Wer Excel kennt, lernt VBA deshalb oft schneller als eine völlig neue Programmiersprache. Die zentralen Konzepte – Arbeitsmappe, Tabellenblatt, Bereich, Zeile, Spalte und Zelle – sind vertraut.
VBA ist alt, aber weiterhin relevant
VBA stammt aus den 1990er-Jahren. Microsoft entwickelt die Sprache nicht mehr im gleichen Tempo weiter wie moderne Plattformen. Gleichzeitig ist VBA nicht abgekündigt. Viele Makros, die vor vielen Jahren geschrieben wurden, laufen heute noch.
Diese Stabilität ist ein Grund, weshalb VBA im Finanzbereich so hartnäckig überlebt hat. Modelle, die über Jahre unverändert funktionieren sollen, profitieren von einer Umgebung, die sich nicht ständig neu erfindet.
VBA ist jedoch keine moderne Allzwecksprache mit grossem Paketökosystem. Für komplexe Datenanalyse, statistische Modellierung, Machine Learning oder professionelle Softwareentwicklung ist Python meistens die bessere Wahl. Für cloudbasierte Automatisierungen sind Office Scripts und Power Automate oft geeigneter.
VBA oder Alternative: Welche Lösung passt?
In den letzten Jahren hat Microsoft den Excel-Werkzeugkasten stark erweitert. Eine ehrliche Einführung in VBA muss diese Alternativen berücksichtigen. Sonst investiert man Lernzeit in eine Technologie, die für den konkreten Zweck vielleicht gar nicht mehr optimal ist.
Power Query
Power Query ist heute meist die beste erste Wahl, wenn Daten importiert, bereinigt und transformiert werden sollen. Typische Beispiele sind CSV-Dateien von Banken, exportierte Kreditkartenabrechnungen, Rohdaten aus Buchhaltungssystemen oder Tabellen aus anderen Quellen.
Wer regelmässig Bankauszüge einliest, sortiert, kategorisiert und zusammenführt, sollte zuerst Power Query prüfen. Die Bedienung ist weitgehend klickorientiert, die Schritte sind nachvollziehbar und die Abfrage kann später aktualisiert werden. Für reine Datenaufbereitung ist Power Query in vielen Fällen eleganter, robuster und wartungsärmer als ein VBA-Makro.
Python in Excel
Python in Excel bringt Python-Code direkt in
Excel-Zellen. Das ist besonders interessant für statistische
Auswertungen, Portfolioanalysen, Simulationen, Visualisierungen und
Datenverarbeitung mit Bibliotheken wie pandas oder
numpy.
Der wichtige Unterschied zu VBA: Python in Excel läuft nicht einfach lokal in der Arbeitsmappe. Die Berechnung erfolgt in einer von Microsoft bereitgestellten Cloud-Umgebung. Das kann für Unternehmen ein Vorteil sein, weil die Umgebung kontrolliert und standardisiert ist. Es bedeutet aber auch, dass Verfügbarkeit, Lizenz, Plattform und Datenschutzanforderungen geprüft werden müssen.
Für fortgeschrittene Finanzanalysen ist Python die modernere und leistungsfähigere Sprache. Für eine einfache Excel-Datei, die offline mit einem Klick funktionieren soll, bleibt VBA oft praktischer.
Office Scripts
Office Scripts sind Microsofts moderner Automatisierungsansatz für Excel in Microsoft 365. Die Scripts verwenden TypeScript und lassen sich mit Power Automate verbinden. Sie eignen sich besonders für wiederkehrende Abläufe, die über mehrere Personen, Geräte oder Cloud-Dienste hinweg laufen sollen.
Office Scripts sind interessant, wenn eine Automatisierung nicht nur auf dem eigenen Desktop funktionieren soll, sondern in einer Microsoft-365-Umgebung sauber geteilt, ausgeführt und in Workflows eingebettet werden muss.
Power Automate
Power Automate automatisiert Abläufe über Anwendungsgrenzen hinweg: eingehende E-Mails, SharePoint-Listen, Genehmigungen, Teams-Nachrichten, Dateiablagen oder Datenbanken. Sobald ein Prozess nicht mehr nur in einer einzelnen Excel-Datei stattfindet, sondern mehrere Dienste verbindet, ist Power Automate oft die passendere Lösung.
Wann VBA weiterhin sinnvoll ist
VBA lohnt sich vor allem in drei Situationen.
Erstens: Der Code soll in einer einzelnen
Excel-Datei bleiben. Eine .xlsm-Datei kann
weitergegeben, geöffnet und offline ausgeführt werden. Für private
Finanztools, kleine KMU-Lösungen oder einmalige Modelle ist das sehr
praktisch.
Zweitens: Die Aufgabe ist eng mit der Excel-Bedienung verbunden. Dazu gehören eigene Schaltflächen, Eingabemasken, spezifische Formatierungen, Ausdrucke, Berichte oder Arbeitsabläufe, die Anwender mit einem Klick starten sollen.
Drittens: Es existiert bereits VBA-Bestandscode. Viele Hypothekenrechner, Steuerrechner, Budgetvorlagen und interne Controlling-Dateien wurden in VBA geschrieben. Wer solche Dateien verstehen oder pflegen muss, kommt um Grundkenntnisse kaum herum.
Nicht ideal ist VBA, wenn grosse Datenmengen analysiert, statistische Modelle entwickelt, APIs angebunden oder cloudbasierte Prozesse orchestriert werden sollen. In diesen Fällen sind Power Query, Python, Office Scripts oder Power Automate meistens überlegen.
Erste Schritte: Entwicklertools und VBA-Editor aktivieren
Standardmässig zeigt Excel die Entwicklerfunktionen nicht immer an. Sie aktivieren sie über:
Datei › Optionen › Menüband anpassen › Entwicklertools
Danach erscheint im Menüband ein zusätzlicher Bereich mit Schaltflächen für Makros, Steuerelemente und den Visual Basic Editor.
Der Editor öffnet sich mit Alt + F11. Er besteht im Wesentlichen aus drei Bereichen:
- Projekt-Explorer: zeigt alle geöffneten Arbeitsmappen und Tabellenblätter.
- Code-Fenster: hier wird der VBA-Code geschrieben.
- Direktfenster: hier lassen sich Ausdrücke testen und Debug-Ausgaben anzeigen.
Ein neues Modul fügen Sie im Projekt-Explorer per Rechtsklick auf die Arbeitsmappe ein: Einfügen › Modul. Module sind der übliche Ort für eigene Makros und Funktionen.
Makrosicherheit: Ein wichtiger Punkt
Excel-Makros sind leistungsfähig, aber sicherheitsrelevant. Sie können nicht nur Zellen formatieren, sondern auch Dateien öffnen, Inhalte verändern und externe Aktionen auslösen. Deshalb waren Makros historisch ein beliebter Angriffsweg für Schadsoftware.
Microsoft blockiert Makros aus dem Internet standardmässig deutlich
strenger als früher. Besonders Dateien, die per E-Mail, Download oder
aus unsicheren Quellen stammen, können blockiert werden. Das ist
sinnvoll: Eine unbekannte .xlsm-Datei sollte man nie
leichtfertig aktivieren.
Für eigene Dateien auf dem eigenen Rechner ist das weniger problematisch. Im professionellen Umfeld empfiehlt sich dennoch eine digitale Signatur für Makroprojekte. Viele Unternehmen lassen unsignierte Makros gar nicht erst zu.
Wichtig ist auch das richtige Dateiformat. Arbeitsmappen mit VBA-Code müssen als .xlsm gespeichert werden. Wird eine Datei nach Warnhinweis als normale .xlsx gespeichert, entfernt Excel den VBA-Code. Deshalb sollte man Makrodateien von Anfang an im richtigen Format ablegen.
Das erste Makro
Der schnellste Einstieg führt über den Makro-Recorder: Entwicklertools › Makro aufzeichnen. Excel zeichnet dabei manuelle Arbeitsschritte auf und erzeugt daraus VBA-Code. Das ist ein gutes Lerninstrument, produziert aber oft unnötig langen und wenig flexiblen Code.
Für den praktischen Einstieg ist handgeschriebener Code besser. Öffnen Sie den VBA-Editor mit Alt + F11, fügen Sie ein Modul ein und schreiben Sie:
Sub Begruessung()
MsgBox "Willkommen in der Welt von VBA"
End Sub
Setzen Sie den Cursor irgendwo zwischen Sub und
End Sub und drücken Sie F5. Excel führt
das Makro aus und zeigt ein Meldungsfenster.
Diese drei Zeilen enthalten bereits die Grundstruktur:
Substartet eine Prozedur.MsgBoxzeigt eine Meldung.End Subbeendet die Prozedur.
Ein etwas nützlicheres Beispiel formatiert einen Bereich als Frankenbetrag:
Sub WaehrungFormatieren()
Range("B2:B100").NumberFormat = "#,##0.00 ""CHF"""
End Sub
Die Zeile formatiert die Zellen B2 bis B100 mit
Tausendertrennzeichen, zwei Dezimalstellen und der Bezeichnung CHF. Die
doppelten Anführungszeichen innerhalb der Zeichenkette sind nötig, damit
VBA das Wort CHF als Textbestandteil des Zahlenformats
behandelt.
Variablen und Datentypen: Bei Geld zählt Genauigkeit
VBA erlaubt grundsätzlich Variablen, ohne sie vorher ausdrücklich zu deklarieren. Das ist bequem, aber fehleranfällig. Ein Tippfehler in einem Variablennamen kann sonst unbemerkt zu falschen Resultaten führen.
Schreiben Sie deshalb in jedes Modul ganz oben:
Option Explicit
Danach verlangt VBA, dass jede Variable deklariert wird. Eine
Variable wird mit Dim angelegt:
Dim anzahlMonate As Long
Dim zinssatz As Double
Dim kundenname As String
Für Finanzanwendungen ist der Datentyp wichtig. Double
ist für viele mathematische Berechnungen geeignet, arbeitet aber mit
binärer Gleitkommaarithmetik. Dadurch können bei Dezimalzahlen minimale
Rundungsabweichungen entstehen.
Für Geldbeträge ist in VBA häufig Currency sinnvoller.
Dieser Datentyp speichert Werte intern mit vier Dezimalstellen und ist
für klassische Buchhaltungsbeträge robuster.
Sub VergleichDatentypen()
Dim summeDouble As Double
Dim summeCurrency As Currency
summeDouble = 0.1 + 0.2
summeCurrency = CCur(0.1) + CCur(0.2)
Debug.Print "Double: "; summeDouble
Debug.Print "Currency: "; summeCurrency
End Sub
Im Direktfenster sieht beides oft identisch aus. Intern kann
Double jedoch eine minimale Abweichung enthalten. Deshalb
sollte man Geldbeträge nicht unnötig als Double
speichern.
Eine brauchbare Faustregel:
- Currency für Geldbeträge, Salden, Zahlungen und Gebühren.
- Double für Zinssätze, Renditen, Quoten und mathematische Kennzahlen.
- Long für Ganzzahlen, Zeilennummern und Zähler.
- Boolean für Wahr/Falsch-Werte.
- Date für Datumswerte.
Das alte Integer ist in VBA auf den Bereich von -32’768
bis 32’767 beschränkt. Für moderne Excel-Arbeit ist Long
fast immer die bessere Wahl.
Datumswerte im Finanzkontext
Im Finanzbereich ist das Datum oft die zentrale Achse: Wertstellung,
Stichtag, Zinsperiode, Steuerjahr, Laufzeit oder Fälligkeit. VBA bietet
dafür den Datentyp Date und mehrere nützliche
Funktionen.
Sub DatumGrundlagen()
Dim heute As Date
Dim stichtag As Date
Dim tageDifferenz As Long
heute = Date
stichtag = DateSerial(2026, 12, 31)
tageDifferenz = stichtag - heute
Debug.Print "Tage bis Jahresende: " & tageDifferenz
End Sub
DateSerial(jahr, monat, tag) ist der saubere Weg, ein
Datum im Code aufzubauen. Diese Schreibweise ist unabhängig davon, ob
das Betriebssystem Schweizer, deutsche oder US-amerikanische
Datumseinstellungen verwendet.
Das ist wichtig. Eine Zeichenkette wie "05.03.2026" kann
je nach Umgebung missverstanden werden.
DateSerial(2026, 3, 5) ist eindeutig.
Für Laufzeiten und Perioden sind DateAdd und
DateDiff besonders nützlich:
Dim ablauf As Date
ablauf = DateAdd("yyyy", 5, Date)
ablauf = DateAdd("m", 3, ablauf)
Dim laufzeitTage As Long
laufzeitTage = DateDiff("d", DateSerial(2026, 1, 1), ablauf)
VBA kennt auch Datumsliterale mit Doppelkreuzen, zum Beispiel
#1/1/2026#. Diese Schreibweise folgt jedoch dem US-Format
Monat/Tag/Jahr und ist für Schweizer Anwender fehleranfällig. Für
robuste Finanzmodelle ist DateSerial klar vorzuziehen.
Eine einfache taggenaue Zinsfunktion nach der Konvention actual/365 könnte so aussehen:
Function ZINS_TAGESGENAU(kapital As Currency, _
zinssatz As Double, _
vonDatum As Date, _
bisDatum As Date) As Currency
Dim tage As Long
tage = DateDiff("d", vonDatum, bisDatum)
ZINS_TAGESGENAU = kapital * zinssatz * tage / 365
End Function
In Excel kann die Funktion beispielsweise so aufgerufen werden:
=ZINS_TAGESGENAU(100000;0,015;DATUM(2026;1;1);DATUM(2026;6;30))
Das ergibt für CHF 100’000 bei 1,5 Prozent über 180 Tage rund CHF
740. In produktiven Anwendungen muss die Tageszählkonvention bewusst
gewählt werden. Je nach Produkt können Banken mit
actual/365, actual/360, 30/360
oder anderen Konventionen rechnen.
Entscheidungen und Schleifen
Programme bestehen nicht nur aus Zuweisungen, sondern auch aus Entscheidungen und Wiederholungen. VBA bietet dafür klassische Strukturen.
Eine einfache Verzweigung:
If saldo < 0 Then
MsgBox "Der Saldo ist negativ."
ElseIf saldo = 0 Then
MsgBox "Der Saldo ist ausgeglichen."
Else
MsgBox "Der Saldo ist positiv: " & saldo
End If
Eine Schleife über einen Zellbereich:
Sub PositiveZaehlen()
Dim zelle As Range
Dim anzahl As Long
anzahl = 0
For Each zelle In Range("B2:B100")
If IsNumeric(zelle.Value) And zelle.Value > 0 Then
anzahl = anzahl + 1
End If
Next zelle
MsgBox "Positive Werte: " & anzahl
End Sub
Dieses Muster ist in der Praxis häufig: Bereich definieren, jede
Zelle prüfen, Werte zählen oder summieren. IsNumeric
verhindert, dass ein Textkommentar im Datenbereich sofort zu einem
Laufzeitfehler führt.
Wenn die Anzahl Wiederholungen feststeht, ist eine klassische
For-Schleife oft lesbarer:
Dim i As Long
For i = 1 To 12
Cells(i + 1, 1).Value = "Monat " & i
Next i
Bei Cells(zeile, spalte) steht zuerst die Zeile und dann
die Spalte. Das ist eine häufige Fehlerquelle, weil Excel-Adressen wie
A1 optisch zuerst die Spalte nennen.
Eigene Funktionen in Excel verwenden
Makros mit Sub führen Aktionen aus, geben aber keinen
Wert zurück. Mit Function lassen sich eigene Funktionen
erstellen, die direkt in Excel-Zellen verwendet werden können.
Das ist für Finanzthemen besonders nützlich, weil wiederkehrende Berechnungen aus langen Formeln ausgelagert werden können.
Ein Beispiel: annualisierte Rendite über mehrere Jahre.
Function RENDITE_PA(anfangswert As Double, _
endwert As Double, _
jahre As Double) As Variant
If anfangswert <= 0 Or jahre <= 0 Then
RENDITE_PA = CVErr(xlErrNum)
Exit Function
End If
RENDITE_PA = (endwert / anfangswert) ^ (1 / jahre) - 1
End Function
In einer Excel-Zelle wird die Funktion so verwendet:
=RENDITE_PA(10000;12000;3)
Das Resultat beträgt rund 6,27 Prozent pro Jahr.
Für benutzerdefinierte Funktionen ist Fehlerbehandlung wichtig. Im Beispiel liefert die Funktion bei ungültigen Eingaben einen Excel-Fehler zurück, statt ein irreführendes Resultat zu berechnen.
Zwei Praxisregeln sind wichtig:
Erstens: Benutzerdefinierte VBA-Funktionen sind oft langsamer als eingebaute Excel-Funktionen. Bei sehr grossen Tabellen sollte man prüfen, ob eine native Funktion schneller und stabiler ist.
Zweitens: Eine Funktion sollte möglichst keine anderen Zellen verändern. Gute Tabellenfunktionen verhalten sich wie mathematische Funktionen: Eingaben hinein, Ergebnis heraus. Seiteneffekte machen Modelle schwer prüfbar.
Debuggen: Fehler systematisch finden
Wer VBA lernt, trifft schnell auf Laufzeitfehler. Der Editor markiert dann eine Zeile gelb, und das Programm hält an. Entscheidend ist, nicht einfach auf «Beenden» zu klicken und wahllos weiterzuprobieren, sondern die eingebauten Werkzeuge zu nutzen.
Direktfenster
Das Direktfenster öffnen Sie mit Strg + G. Hier lassen sich Werte ausgeben und Ausdrücke testen:
Debug.Print Range("B2").Value
Debug.Print "Differenz: " & (a - b)
? Date + 30
Das Fragezeichen ist eine Kurzform für Print und
funktioniert im Direktfenster. Debug.Print ist wesentlich
besser als ständige MsgBox-Unterbrechungen, wenn man Werte
während der Programmausführung beobachten will.
Haltepunkte
Ein Haltepunkt wird mit einem Klick links neben eine Codezeile gesetzt. Beim nächsten Lauf hält VBA dort an. Mit F8 kann man den Code anschliessend Zeile für Zeile ausführen.
Während der Code angehalten ist, zeigt VBA Variablenwerte an, wenn man mit der Maus über eine Variable fährt. Damit lassen sich Logikfehler meist schneller finden als durch reines Lesen des Codes.
Lokalfenster und Objektkatalog
Das Lokalfenster zeigt während einer angehaltenen Ausführung alle Variablen der aktuellen Prozedur. Der Objektkatalog (F2) listet Klassen, Methoden, Eigenschaften und Konstanten des Excel-Objektmodells auf.
Gerade für Einsteiger ist der Objektkatalog wertvoll. Man sieht dort
beispielsweise, welche Eigenschaften ein Range-Objekt
besitzt und welche Methoden verfügbar sind.
Praxisbeispiel: Transaktionen auswerten
Das folgende Beispiel verbindet mehrere Grundlagen zu einem kleinen, lauffähigen Werkzeug. Vorausgesetzt wird ein Tabellenblatt namens Transaktionen:
- Spalte A: Datum
- Spalte B: Betrag
- ab Zeile 2: Buchungen
- positive Werte: Einnahmen
- negative Werte: Ausgaben
Sub TransaktionenAuswerten()
Dim ws As Worksheet
Dim letzteZeile As Long
Dim zeile As Long
Dim einnahmen As Currency
Dim ausgaben As Currency
Dim betrag As Currency
Set ws = ThisWorkbook.Worksheets("Transaktionen")
letzteZeile = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
For zeile = 2 To letzteZeile
If IsNumeric(ws.Cells(zeile, 2).Value) Then
betrag = CCur(ws.Cells(zeile, 2).Value)
If betrag > 0 Then
einnahmen = einnahmen + betrag
Else
ausgaben = ausgaben + betrag
End If
End If
Next zeile
MsgBox "Einnahmen: CHF " & Format(einnahmen, "#,##0.00") & vbCrLf & _
"Ausgaben: CHF " & Format(ausgaben, "#,##0.00") & vbCrLf & _
"Saldo: CHF " & Format(einnahmen + ausgaben, "#,##0.00")
End Sub
Drei Punkte sind daran wichtig.
ThisWorkbook.Worksheets("Transaktionen") bezieht sich
ausdrücklich auf das Blatt in der Arbeitsmappe, in der der Code
gespeichert ist. Das ist robuster als ein Bezug auf das gerade aktive
Blatt.
ws.Cells(ws.Rows.Count, 2).End(xlUp).Row bestimmt die
letzte gefüllte Zeile in Spalte B. Dieses Muster wird in VBA sehr häufig
verwendet.
Format(..., "#,##0.00") sorgt für eine lesbare Ausgabe
mit Tausendertrennzeichen und zwei Dezimalstellen.
Dieses Mini-Werkzeug lässt sich leicht erweitern: nach Monaten gruppieren, Kategorien auswerten, Budgets vergleichen oder Bankexporte importieren. Genau in solchen überschaubaren Excel-nahen Aufgaben liegt die Stärke von VBA.
Typische Stolperfallen
VBA ist zugänglich, hat aber einige Eigenheiten, die Einsteiger viel Zeit kosten können.
Makros auf macOS
VBA läuft auch in Excel für Mac, aber nicht alle Funktionen verhalten sich identisch wie unter Windows. Besonders Dateioperationen, externe Komponenten, Windows-spezifische Objekte und ältere ActiveX-Lösungen können Probleme verursachen. Wer Dateien an Mac-Anwender weitergibt, sollte sie auf dem Mac testen.
Blockierte Makros nach Versand
Eine .xlsm-Datei, die per E-Mail oder Download auf einen
Rechner gelangt, kann als Datei aus dem Internet markiert und blockiert
werden. Der Empfänger muss die Datei unter Umständen bewusst entsperren.
In Unternehmen können Gruppenrichtlinien Makros zusätzlich
einschränken.
Für professionelle Verteilung ist eine digitale Signatur deutlich sauberer als die Aufforderung, Sicherheitswarnungen zu umgehen.
Schwierige Versionierung
VBA-Code lebt in der Excel-Datei. Dadurch ist er mit klassischen
Entwicklerwerkzeugen wie Git nicht so einfach versionierbar. Wer
ernsthaft mit VBA arbeitet, sollte Module regelmässig als Textdateien
(.bas, .cls, .frm) exportieren
oder spezialisierte Werkzeuge verwenden.
Langsame Zellzugriffe
Jeder einzelne Zugriff auf eine Excel-Zelle ist relativ teuer. Eine Schleife, die 100’000 Zellen einzeln liest und schreibt, kann sehr langsam werden. Professioneller VBA-Code lädt grössere Bereiche in ein Array, verarbeitet die Daten im Speicher und schreibt das Ergebnis anschliessend in einem Schritt zurück.
Das kann die Laufzeit drastisch reduzieren.
Fehlende Backups
VBA kann Daten sehr schnell verändern oder löschen. Eine falsch formulierte Schleife kann in Sekunden ein ganzes Tabellenblatt überschreiben. Deshalb sollten produktive Dateien gesichert und idealerweise in einem Ordner mit Versionsverlauf gespeichert werden.
Zu wenig Fehlerbehandlung
Ohne Fehlerbehandlung bricht VBA bei einem Laufzeitfehler hart ab. Für Code, der weitergegeben wird, sollte mindestens eine einfache Fehlerbehandlung eingebaut werden:
Sub BeispielMitFehlerbehandlung()
On Error GoTo Fehler
' Hier steht der eigentliche Code.
Exit Sub
Fehler:
MsgBox "Es ist ein Fehler aufgetreten: " & Err.Description, vbExclamation
End Sub
Das verhindert nicht jeden Fehler, macht ein Makro aber deutlich professioneller und verständlicher für Anwender.
Fazit: Soll man VBA 2026 noch lernen?
Ja – aber mit klarem Anwendungsfall.
Für wiederkehrende Excel-Aufgaben auf einem einzelnen Rechner bleibt VBA eine pragmatische und stabile Lösung. Dazu gehören Hypothekenrechner, Budgettools, Steuerhilfen, einfache Auswertungen, benutzerdefinierte Funktionen und Makros zur Formatierung oder Berichtserstellung.
Für datenintensive Analysen, Statistik, Visualisierungen und Portfolioauswertungen ist Python meist die bessere Wahl. Für Datenimport und Datenbereinigung ist Power Query oft überlegen. Für cloudbasierte Workflows über mehrere Dienste hinweg sind Office Scripts und Power Automate strategisch sinnvoller.
Die beste Empfehlung für Finanzanwender lautet daher nicht: «Lernen Sie nur VBA.» Besser ist:
Lernen Sie VBA so weit, dass Sie einfache Makros schreiben, eigene Funktionen erstellen und bestehende Makrodateien verstehen können. Ergänzen Sie dieses Wissen anschliessend mit Power Query und – je nach Bedarf – Python in Excel. Diese Kombination deckt im Finanzalltag deutlich mehr ab als jede einzelne Technologie für sich.
VBA ist damit nicht die Zukunft aller Excel-Automatisierung. Aber es bleibt ein nützliches Werkzeug für genau die Aufgaben, für die es geschaffen wurde: Excel direkt, zuverlässig und ohne grosse Infrastruktur zu automatisieren.
Welche Alternativen gibt es zu Excel VBA?
Die in diesem Artikel angesprochenen Alternativen decken jeweils unterschiedliche Bereiche ab: Power Query für Datenaufbereitung, Office Scripts und Power Automate für cloudbasierte Workflows, Python für anspruchsvolle Finanzanalyse, Statistik und Modellierung.
Für Leser, die nach diesem VBA-Einstieg den nächsten Schritt machen möchten, ist Python in der Regel die lohnendste Investition. Die Sprache hat sich im quantitativen Finanzbereich als De-facto-Standard etabliert und lässt sich sowohl eigenständig als auch direkt in Excel einsetzen. Den entsprechenden Einstieg finden Sie in unserer separaten Einführung in Python für die Finanzanalyse [Link einfügen].













































