Næste fakturanummer - Nyheder

Microsoft Excel tilbyder mange fakturaskabeloner, som du kan downloade. Men der er ingen indbygget måde at forøge det næste fakturanummer på.

Jeg optog denne video, der viser, hvordan du tilføjer et par linjer VBA-kode til din projektmappe, så du kan gemme hver faktura som en ny fil. Makroen rydder derefter fakturaen og tilføjer 1 til fakturanummeret.

Med 166K visninger og hundredvis af kommentarer finder jeg de samme spørgsmål kommer igen og igen. Det er blevet upraktisk at bede folk om at læse igennem 800 kommentarer, fordi svaret på deres spørgsmål er blevet sendt seks gange før. Så - for populære spørgsmål sender jeg koden her.

FAQ # 1

Kan du skrive koden for mig, fordi jeg ikke kan skrive?

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

Jeg vil gemme fakturaen som en PDF på en Windows-pc

Bemærk

Denne kode fungerer kun i Windows-versioner af Excel 2010 eller nyere. Der er en anden kode til en Mac.

Du skal vælge det interval, der indeholder fakturaen, og udføre sidelayout, udskrivningsområde, indstil udskrivningsområde. Hvis du springer dette trin over, vises de knapper, der bruges til at køre makroen, på din faktura!

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

Jeg vil gemme fakturaen som både en Excel-fil og en PDF-fil i en anden mappe

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

Mit fakturanummer har tal og bogstaver

Du bliver nødt til at tilpasse koden. Her er nogle eksempler. Heidi har et fakturanummer som SS15001. Når jeg ser på dette fakturanummer, er det et to-bogstavs præfiks efterfulgt af 5 cifre. Det nye fakturanummer skal bruge VENSTRE (, 2) og MID (, 3,5):

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

Her er et mere komplekst eksempel. Fakturanummeret er IN-1234-HA, hvor IN står for faktura. 1234 er et løbenummer. HA er den første til bogstaver i kundenavnet, der findes i B10.

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

Du kan forenkle ovenstående fire linjer som følger:

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

FAQ # 5

Jeg har andre makroer i projektmappen (såsom SpellNumber) og har brug for også at gemme makroerne.

For at give dine andre makroer mulighed for at køre for at få Numbers-to-Words-funktionen til at fortsætte med at arbejde, er strategien lidt anderledes. I stedet for kun at kopiere fakturaarket til en ny projektmappe og bruge SaveAs, vil du (a) Huske stien og filnavnet på projektmappen, (b) Brug SaveAs til at gemme hele projektmappen med fakturanummeret i navnet, (c Slet den originale projektmappe. (d) Brug SaveAs til at gemme projektmappen med det originale navn.

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

Jeg har brug for at beskytte regnearket, så mine medarbejdere kun kan ændre nogle celler. Når jeg kører din makro, får jeg "Den celle, du prøver at ændre, er beskyttet og derfor skrivebeskyttet"

Du kan fjerne beskyttelsen af ​​arket i makroen, skrive det nye fakturanummer og derefter beskytte arket. Dette skal kun gøres i NextInvoice-makroen. Den anden makro foretager ikke ændringer i nogen celler. Her er koden, hvis du bruger beskyttelse uden adgangskode:

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

Jeg vil ikke have knappen Gem i den gemte projektmappe

Dette er vanskeligt, fordi navnet på din form ændres, når regnearket flytter til en ny projektmappe. Følg disse trin meget omhyggeligt:

  1. Åbn fakturamakro-projektmappen
  2. Højreklik på arkfanen, der indeholder din faktura. Vælg Flyt eller Kopiér.
  3. I rullemenuen Til bog: vælg Ny bog. Marker afkrydsningsfeltet Opret en kopi. Klik på OK. Dette trin 3 simulerer ActiveSheet.Copy i VBA.
  4. Nu hvor du har fakturaarket i en ny projektmappe, skal du Ctrl-klikke på den figur, du vil slette. Ctrl + Klik vælger formen uden at køre makroen.
  5. Med den valgte form skal du se til venstre for formellinjen. Navnefeltet viser et navn som "Afrundet rektangel 1". Byg meget omhyggeligt en ny kodelinje for at slette denne form som vist nedenfor lige efter ActiveSheet.
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

Fejlfinding og fejlmeddelelser

  1. Følgende funktioner kan ikke gemmes i makrofrie projektmapper: VB Project. Svar: Din fil er i øjeblikket gemt som en XLSX-fil. Jeg er lige så irriteret over, at Microsoft valgte at bruge en ødelagt filtype som standard. Brug File, SaveAs, og skift filtypen til enten XLSB eller 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. Run Time Error 1004. Dokument ikke gemt. Svar: Filstien skal være nøjagtig. Læg før filen gemmes, tilføj en ny linje med MsgBox NewFN. Kør koden. Der vises et felt, der viser filstien og filnavnet. Sørg for, at der er en stiseparator mellem stien og filnavnet.
  6. Kørselsfejl '1004'. Metoden 'SaveAs' for objektet '_Workbook' mislykkedes. Svar: FileFormat skal være FileFormat: = xlOpenXMLWorkbook. Når du læser det, skal det lyde som "Excel Open XML Workbook". Det er ikke Ex One Open XML-projektmappe. Ja, det er forvirrende, at et nummer 1 og små bogstaver L ser ens ud i videoen. 1l. Skift din X1OPENXMLWORKBOOK til XLOPENXMLWORKBOOK.

Interessante artikler...