Tutorial: Rechnungsformular leeren und Rechnungsnummer automatisch erhöhen mit VBA
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:
- Klicke mit der rechten Maustaste auf eine beliebige Stelle im Menüband (Ribbon).
- Wähle Menüband anpassen....
- Setze auf der rechten Seite ein Häkchen bei Entwicklertools.
- Klicke auf OK.
Schritt 3: Den VBA-Editor öffnen und Code schreiben
- Gehe auf die Registerkarte Entwicklertools und klicke ganz links auf Visual Basic (oder drücke
ALT+F11). - Klicke im Menü auf Einfügen -> Modul. Ein weißes Textfenster erscheint.
- 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:
- Gehe in Excel auf die Registerkarte Entwicklertools.
- Klicke auf Einfügen und wähle unter "Formularsteuerelemente" das erste Symbol (Schaltfläche).
- Zeichne mit der Maus einen Button auf dein Tabellenblatt.
- Es öffnet sich automatisch ein Fenster ("Makro zuweisen"). Wähle hier
Rechnung_Zuruecksetzenaus und klicke auf OK. - 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.
- Gehe auf Datei -> Speichern unter.
- 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!