Nästa fakturanummer - Nyheter

Microsoft Excel erbjuder många fakturamallar som du kan ladda ner. Men det finns inget inbyggt sätt att öka till nästa fakturanummer.

Jag spelade in den här videon som visar hur man lägger till några rader VBA-kod i din arbetsbok så att du kan spara varje faktura som en ny fil. Makrot rensar sedan fakturan och lägger till 1 i fakturanumret.

Med 166 000 visningar och hundratals kommentarer finner jag att samma frågor kommer upp om och om igen. Det har blivit opraktiskt att be folk läsa igenom 800 kommentarer eftersom svaret på deras fråga har publicerats sex gånger tidigare. Så - för populära frågor lägger jag upp koden här.

FAQ # 1

Kan du skriva koden åt mig eftersom jag inte kan skriva?

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

Jag vill spara fakturan som en PDF på en Windows-dator

Notera

Den här koden fungerar bara i Windows-versioner av Excel 2010 eller senare. Det finns en annan kod för en Mac.

Du måste välja det intervall som innehåller fakturan och göra sidlayout, utskriftsområde, ange utskriftsområde. Om du hoppar över det här steget visas knapparna som används för att köra makrot i 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

Jag vill spara fakturan som både en Excel-fil och en PDF-fil i en annan mapp

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

Mitt fakturanummer har siffror och bokstäver

Du måste anpassa koden. Här är några exempel. Heidi har ett fakturanummer som SS15001. När jag tittar på fakturanumret är det ett prefix med två bokstäver följt av fem siffror. Det nya fakturanumret måste använda VÄNSTER (, 2) och MID (, 3,5):

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

Här är ett mer komplext exempel. Fakturanumret är IN-1234-HA där IN står för faktura. 1234 är ett löpnummer. HA är den första bokstaven i kundnamnet som finns 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 förenkla ovanstående fyra rader enligt följande:

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

FAQ # 5

Jag har andra makron i arbetsboken (som SpellNumber) och behöver också att makron sparas.

För att dina andra makron ska kunna köras för att funktionen Numbers-to-Words ska fungera är strategin lite annorlunda. Istället för att bara kopiera fakturabladet till en ny arbetsbok och använda SaveAs kommer du (a) Kom ihåg arbetsbokens sökväg och filnamn, (b) Använd SaveAs för att spara hela arbetsboken med fakturanumret i namnet, (c ) Ta bort den ursprungliga arbetsboken. (d) Använd SaveAs för att spara arbetsboken med det ursprungliga namnet.

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

Jag måste skydda kalkylbladet så att mina anställda bara kan ändra vissa celler. När jag kör ditt makro får jag "Cellen du försöker ändra är skyddad och därför skrivskyddad"

Du kan avskydda arket i makrot, skriva det nya fakturanumret och sedan skydda arket. Detta behöver bara göras i NextInvoice-makrot. Det andra makrot gör inga ändringar i några celler. Här är koden om du använder skydd utan lösenord:

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

Jag vill inte ha Spara-knappen i den sparade arbetsboken

Detta är knepigt eftersom namnet på din form kommer att ändras när kalkylbladet flyttas till en ny arbetsbok. Följ dessa steg noggrant:

  1. Öppna fakturamakroarboken
  2. Högerklicka på arkfliken som innehåller din faktura. Välj Flytta eller Kopiera.
  3. I rullgardinsmenyn Till bok: välj Ny bok. Markera kryssrutan för Skapa en kopia. Klicka på OK. Detta steg 3 simulerar ActiveSheet.Copy i VBA.
  4. Nu när du har fakturaarkbladet i en ny arbetsbok, Ctrl-klicka på den form du vill ta bort. Ctrl + Click markerar formen utan att köra makrot.
  5. Med den valda formen tittar du till vänster om formelfältet. Namnrutan visar ett namn som "Rundad rektangel 1". Bygg mycket försiktigt en ny kodrad för att ta bort denna form som visas nedan strax 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

Felsökning och felmeddelanden

  1. Följande funktioner kan inte sparas i makrofria arbetsböcker: VB Project. Svar: Din fil sparas för närvarande som en XLSX-fil. Jag är lika irriterad över att Microsoft valde att använda en trasig filtyp som standard. Använd File, SaveAs och ändra filtypen till antingen 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 sparades inte. Svar: Filvägen måste vara exakt. Strax innan du sparar filen lägger du till en ny rad med MsgBox NewFN. Kör koden. En ruta dyker upp som visar filsökvägen och filnamnet. Se till att det finns en sökavgränsare mellan sökvägen och filnamnet.
  6. Körtidsfel '1004'. Metoden 'SaveAs' för objektet '_Workbook' misslyckades. Svar: FileFormat måste vara FileFormat: = xlOpenXMLWorkbook. När du läser den ska det låta som "Excel Open XML Workbook". Det är inte Ex One Open XML Workbook. Ja, det är förvirrande att ett nummer 1 och gemener L ser lika ut i videon. 1l. Ändra din X1OPENXMLWORKBOOK till XLOPENXMLWORKBOOK.

Intressanta artiklar...