Tutorial: Rechnungsformular leeren und Rechnungsnummer automatisch erhöhen mit VBA

Melden

Hier ist ein ausführliches Tutorial, wie du in Excel ein Rechnungsformular per VBA-Makro automatisierst.

Dieses Tutorial zeigt dir, wie du mit nur einem Klick deine aktuelle Rechnung säuberst, um Platz für eine neue zu machen, und dabei die Rechnungsnummer automatisch um eins erhöhst.


Schritt 1: Vorbereitung der Excel-Tabelle

Bevor wir den Code schreiben, müssen wir wissen, welche Zellen bearbeitet werden sollen. In diesem Beispiel nehmen wir folgende Struktur an:

  • Rechnungsnummer: Zelle B5
  • Kundendaten: Zellen B7:B9
  • Rechnungsposten (Artikel, Menge, Preis): Bereich A13:D25

Schritt 2: Die Registerkarte „Entwicklertools“ aktivieren

Falls du die Registerkarte Entwicklertools oben im Menüband noch nicht siehst:

  1. Klicke mit der rechten Maustaste auf eine beliebige Stelle im Menüband (Ribbon).
  2. Wähle Menüband anpassen....
  3. Setze auf der rechten Seite ein Häkchen bei Entwicklertools.
  4. Klicke auf OK.

Schritt 3: Den VBA-Editor öffnen und Code schreiben

  1. Gehe auf die Registerkarte Entwicklertools und klicke ganz links auf Visual Basic (oder drücke ALT + F11).
  2. Klicke im Menü auf Einfügen -> Modul. Ein weißes Textfenster erscheint.
  3. Kopiere den folgenden Code und füge ihn in das Fenster ein:
Sub Rechnung_Zuruecksetzen()
    ' Deklaration von Variablen (optional, aber guter Stil)
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1") ' Ersetze "Tabelle1" durch den Namen deines Blattes

    ' 1. Sicherheitsabfrage (Verhindert versehentliches Löschen)
    Dim Antwort As VbMsgBoxResult
    Antwort = MsgBox("Möchten Sie die Rechnung wirklich zurücksetzen?", vbYesNo + vbQuestion, "Bestätigung")

    If Antwort = vbYes Then

        ' 2. Rechnungsnummer um 1 erhöhen
        ' Wir gehen davon aus, dass in B5 die Zahl steht
        ws.Range("B5").Value = ws.Range("B5").Value + 1

        ' 3. Kundendaten löschen (Name, Adresse, etc.)
        ws.Range("B7:B9").ClearContents

        ' 4. Rechnungsposten löschen (Der Bereich, in dem Artikel stehen)
        ws.Range("A13:D25").ClearContents

        ' 5. Cursor auf ein Startfeld setzen (z.B. Name des Kunden)
        ws.Range("B7").Select

        MsgBox "Die Rechnung wurde geleert und die Nummer erhöht.", vbInformation, "Erledigt"

    End If
End Sub

Hinweis: Passe die Zellbezüge (B5, B7:B9, A13:D25) an dein eigenes Layout an.


Schritt 4: Eine Schaltfläche (Button) erstellen

Damit du das Makro einfach starten kannst, erstellen wir einen Button direkt auf dem Rechnungsblatt:

  1. Gehe in Excel auf die Registerkarte Entwicklertools.
  2. Klicke auf Einfügen und wähle unter "Formularsteuerelemente" das erste Symbol (Schaltfläche).
  3. Zeichne mit der Maus einen Button auf dein Tabellenblatt.
  4. Es öffnet sich automatisch ein Fenster ("Makro zuweisen"). Wähle hier Rechnung_Zuruecksetzen aus und klicke auf OK.
  5. Klicke auf den Text im Button, um ihn umzubenennen (z. B. "Neue Rechnung erstellen").

Schritt 5: Die Datei richtig speichern

Da deine Datei nun ein Makro enthält, kannst du sie nicht als normale .xlsx-Datei speichern.

  1. Gehe auf Datei -> Speichern unter.
  2. Wähle als Dateityp unbedingt *Excel-Arbeitsmappe mit Makros (.xlsm)** aus.

Tipps für Fortgeschrittene:

  • Pflichtfelder prüfen: Du könntest den Code so erweitern, dass er prüft, ob die aktuelle Rechnung bereits gedruckt oder als PDF gespeichert wurde, bevor sie gelöscht wird.
  • Formatierung erhalten: Nutze .ClearContents (wie im Code oben), damit nur die Werte gelöscht werden, aber deine Rahmenlinien und Hintergrundfarben erhalten bleiben.
  • Rechnungsnummer-Format: Wenn deine Nummer z. B. "RE-2023-001" ist, wird einfaches Addieren schwerer. In diesem Fall müsste man den numerischen Teil extrahieren, erhöhen und wieder zusammensetzen.

Viel Erfolg bei der Automatisierung deiner Buchhaltung!

0