Nächste Rechnungsnummer - News

Microsoft Excel bietet viele Rechnungsvorlagen, die Sie herunterladen können. Es gibt jedoch keine integrierte Möglichkeit, auf die nächste Rechnungsnummer zu erhöhen.

Ich habe dieses Video aufgenommen, das zeigt, wie Sie Ihrer Arbeitsmappe einige Zeilen VBA-Code hinzufügen, damit Sie jede Rechnung als neue Datei speichern können. Das Makro löscht dann die Rechnung und addiert 1 zur Rechnungsnummer.

Mit 166.000 Ansichten und Hunderten von Kommentaren stelle ich fest, dass immer wieder dieselben Fragen auftauchen. Es ist unpraktisch geworden, Leute zu bitten, 800 Kommentare durchzulesen, da die Antwort auf ihre Frage bereits sechs Mal veröffentlicht wurde. Also - für beliebte Fragen poste ich den Code hier.

FAQ # 1

Können Sie den Code für mich eingeben, weil ich nicht eingeben kann?

Sub NextInvoice() Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

FAQ # 2

Ich möchte die Rechnung als PDF auf einem Windows-PC speichern

Hinweis

Dieser Code funktioniert nur in Windows-Versionen von Excel 2010 oder neuer. Für einen Mac gibt es einen anderen Code.

Sie müssen den Bereich auswählen, der die Rechnung enthält, und Seitenlayout, Druckbereich, Druckbereich festlegen ausführen. Wenn Sie diesen Schritt überspringen, werden die Schaltflächen zum Ausführen des Makros in Ihrer Rechnung angezeigt!

Sub SaveInvoiceAsPDFAndClear() Dim NewFN As Variant NewFN = "C:aaaInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub

FAQ # 3

Ich möchte die Rechnung sowohl als Excel-Datei als auch als PDF in einem anderen Ordner speichern

Sub SaveInvoiceBothWaysAndClear() Dim NewFN As Variant ' Create the PDF First NewFN = "C:aaaPDFInvoicesInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False ' Next, Save the Excel File ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ' Increment the invoice number Range("E5").Value = Range("E5").Value + 1 ' Clear out the invoice fields Range("A20:E39").ClearContents End Sub

FAQ # 4

Meine Rechnungsnummer enthält Zahlen und Buchstaben

Sie müssen den Code anpassen. Hier sind einige Beispiele. Heidi hat eine Rechnungsnummer wie SS15001. Wenn ich mir diese Rechnungsnummer ansehe, ist es ein aus zwei Buchstaben bestehendes Präfix, gefolgt von fünf Ziffern. Die neue Rechnungsnummer muss LEFT (, 2) und MID (, 3,5) verwenden:

Range("E5").Value = Left(Range("E5").Value, 2) & 1 + Mid(Range("E5").Value, 3, 5)

Hier ist ein komplexeres Beispiel. Die Rechnungsnummer lautet IN-1234-HA, wobei IN für Rechnung steht. Der 1234 ist eine fortlaufende Nummer. Der HA ist der erste Buchstabe des in B10 gefundenen Kundennamens.

LeftPart = Left(Range("E5").Value, 3) MidPart = Left(Range("E5").Value, 4, 4) + 1 EndPart = Left(Range("A10").Value, 2) Range("E5").Value = LeftPart & MidPart & EndPart

Sie können die obigen vier Zeilen wie folgt vereinfachen:

Range("E5").Value = Left(Range("E5").Value, 3) & Left(Range("E5").Value, 4, 4) + 1 & Left(Range("A10").Value, 2)

FAQ # 5

Ich habe andere Makros in der Arbeitsmappe (z. B. SpellNumber) und muss die Makros ebenfalls speichern.

Damit Ihre anderen Makros ausgeführt werden können, damit die Funktion "Zahlen zu Wörtern" weiter funktioniert, ist die Strategie etwas anders. Anstatt nur das Rechnungsblatt in eine neue Arbeitsmappe zu kopieren und SaveAs zu verwenden, werden Sie (a) den Pfad und den Dateinamen der Arbeitsmappe speichern, (b) SaveAs verwenden, um die gesamte Arbeitsmappe mit der Rechnungsnummer im Namen zu speichern, (c ) Löschen Sie die ursprüngliche Arbeitsmappe. (d) Verwenden Sie SaveAs, um die Arbeitsmappe unter dem ursprünglichen Namen zu speichern.

Sub SaveInvoiceWithNewName() Dim OrigFN as Variant Dim NewFN As Variant ' Remember the original path and file name OrigFN = ThisWorkbook.FullName NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ' Save a copy with the new name ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ' Delete the original workbook so you can save without warning On Error Resume Next Kill (OrigFN) On Error Goto 0 ' Save again as the original file name ActiveWorkbook.SaveAs OrigFN, FileFormat:=xlOpenXMLWorkbook NextInvoice End Sub

FAQ # 6

Ich muss das Arbeitsblatt schützen, damit meine Mitarbeiter nur einige Zellen ändern können. Wenn ich Ihr Makro ausführe, wird "Die Zelle, die Sie ändern möchten, ist geschützt und daher schreibgeschützt" angezeigt.

Sie können den Schutz des Blattes im Makro aufheben, die neue Rechnungsnummer schreiben und dann das Blatt schützen. Dies muss nur im NextInvoice-Makro erfolgen. Das andere Makro nimmt keine Änderungen an Zellen vor. Hier ist der Code, wenn Sie den Schutz ohne Passwort verwenden:

Sub NextInvoice() ActiveSheet.Unprotect Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Here is the code if you have protected the sheet with a password of Tomato. Note that the password appears in this code twice. Change the password to the real password in two places. Sub NextInvoice() ActiveSheet.Unprotect Password:="Tomato" Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect Password:="Tomato", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

FAQ # 7

Ich möchte die Schaltfläche Speichern nicht in der gespeicherten Arbeitsmappe haben

Dies ist schwierig, da sich der Name Ihrer Form ändert, wenn das Arbeitsblatt in eine neue Arbeitsmappe verschoben wird. Befolgen Sie diese Schritte sehr sorgfältig:

  1. Öffnen Sie die Rechnungsmakro-Arbeitsmappe
  2. Klicken Sie mit der rechten Maustaste auf die Registerkarte Blatt, die Ihre Rechnung enthält. Wählen Sie Verschieben oder Kopieren.
  3. Wählen Sie in der Dropdown-Liste Zu buchen: Neues Buch aus. Aktivieren Sie das Kontrollkästchen Kopie erstellen. OK klicken. Dieser Schritt 3 simuliert die ActiveSheet.Copy in der VBA.
  4. Nachdem Sie das Rechnungsarbeitsblatt in einer neuen Arbeitsmappe haben, klicken Sie bei gedrückter Strg-Taste auf die Form, die Sie löschen möchten. Strg + Klicken wählt die Form aus, ohne das Makro auszuführen.
  5. Schauen Sie bei ausgewählter Form links neben der Formelleiste nach. Das Namensfeld zeigt einen Namen wie "Abgerundetes Rechteck 1" an. Erstellen Sie sehr sorgfältig eine neue Codezeile, um diese Form zu löschen, wie unten gezeigt, direkt nach ActiveSheet.Copy:
Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy ActiveSheet.Shapes("Rounded Rectangle 1").Delete NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

Fehlerbehebung und Fehlermeldungen

  1. Die folgenden Funktionen können nicht in makrofreien Arbeitsmappen gespeichert werden: VB Project. Antwort: Ihre Datei wird derzeit als XLSX-Datei gespeichert. Ich bin ebenso verärgert darüber, dass Microsoft einen defekten Dateityp als Standard verwendet hat. Verwenden Sie Datei, Speichern unter und ändern Sie den Dateityp in XLSB oder XLSM.
  2. Type Mismatch. Answer: The code expects your invoice number to be a number. If you have SS15001 as an invoice number, you will have to figure out how to adapt your code. See FAQ #4 above.
  3. Compile error Expected line number or label or statement or end of statement on NewFN = “F:RobinusinessPCreceiptsInv” & Range(“H10”).Value & “.xlsx”. Answer: VBA does not like slanted quotation marks (also called Typographers quotes). Type the quotation mark in VBA and you will get "F:RobinusinessPCreceiptsInv" & Range("H10").Value & ".xlsx"
  4. We couldn't find C:UserJelenDocuments" Answer: The file path has to be exact. Are you sure you didn't mean C:UsersJelenDocuments? (Note the "s" at the end of users)
  5. Laufzeitfehler 1004. Dokument nicht gespeichert. Antwort: Der Dateipfad muss genau sein. Fügen Sie kurz vor dem Speichern der Datei eine neue Zeile mit MsgBox NewFN hinzu. Führen Sie den Code aus. Ein Feld mit dem Dateipfad und dem Dateinamen wird angezeigt. Stellen Sie sicher, dass zwischen dem Pfad und dem Dateinamen ein Pfadtrennzeichen vorhanden ist.
  6. Laufzeitfehler '1004'. Die Methode 'SaveAs' des Objekts '_Workbook' ist fehlgeschlagen. Antwort: Das FileFormat muss FileFormat sein: = xlOpenXMLWorkbook. Wenn Sie es lesen, sollte es wie "Excel Open XML Workbook" klingen. Es ist keine Ex One Open XML-Arbeitsmappe. Ja, es ist verwirrend, dass eine Zahl 1 und ein Kleinbuchstabe L im Video gleich aussehen. 1l. Ändern Sie Ihr X1OPENXMLWORKBOOK in XLOPENXMLWORKBOOK.

Interessante Beiträge...