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:

  • Sub startet eine Prozedur.
  • MsgBox zeigt eine Meldung.
  • End Sub beendet 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].

Vorheriger ArtikelVAE verlassen die OPEC: Was dies für Ölmärkte und Anleger bedeutet