尝试创build自动开票Excel VBA

我正在尝试从Excel中的客户数据列表创build自动发票。 我有macros和一些VBA的经验,但没有深入此前。 我复制了我想要的基本模板。 我复制了大部分的结构,改变了我所需要的,但是它不适合我。 我试图通过自己的方法来研究其他方法,但是恐怕我现在头脑不清。 这里是我的代码,我得到了“运行时错误1004”。 如果有人能告诉我什么是需要修复它,我将不胜感激。

码:

Private Sub CommandButton1_Click() Dim customer As String Dim customerid As String Dim invoicenumber As Long Dim r As Integer Dim mydate As String Dim path As String Dim myfilename As String Dim providercount As Integer Dim basefee As Integer Dim faxlines As Integer Dim faxpages As Integer Dim faxbundles As Integer Dim invoicedate As String Dim lastrow As Long 'This row is causing the error lastrow = Sheets("Greenway").Range(“A” & Rows.Count).End(xlUp).Row r = 8 For r = 8 To lastrow If Cells(r, 14).Value = “done” Then GoTo nextrow customer = ThisWorkbook.Sheets(“Greenway”).Cells(r, 3).Value customerid = ThisWorkbook.Sheets(“Greenway”).Cells(r, 2).Value providercount = ThisWorkbook.Sheets(“Greenway”).Cells(r, 5).Value basefee = ThisWorkbook.Sheets(“Greenway”).Cells(r, 6).Value faxlines = ThisWorkbook.Sheets(“Greenway”).Cells(r, 7).Value faxpages = ThisWorkbook.Sheets(“Greenway”).Cells(r, 10).Value faxbundles = ThisWorkbook.Sheets(“Greenway”).Cells(r, 11).Value invoicenumber = ThisWorkbook.Sheets(“Greenway”).Cells(r, 15).Value invoicedate = ThisWorkbook.Sheets(“Greenway”).Cells(r, 16).Value Cells(r, 14).Value = “done” Application.DisplayAlerts = False Workbooks.Open ("C:\Users\Andrew\Dropbox (Updox)\All Company\DEPT-Finance\Billing\Greenway\Invoices\2015Invoices\Template.xlsx") ActiveWorkbook.Sheets(“invoice”).Activate ActiveWorkbook.Sheets("Invoice").Range("E7").Value = customername ActiveWorkbook.Sheets("Invoice").Range("E5").Value = invoicenumber ActiveWorkbook.Sheets("Invoice").Range("A16").Value = providercount ActiveWorkbook.Sheets("Invoice").Range("A17").Value = faxlines ActiveWorkbook.Sheets("Invoice").Range("A18").Value = faxpages ActiveWorkbook.Sheets("Invoice").Range("A19").Value = faxbundles ActiveWorkbook.Sheets("Invoice").Range("E8").Value = customerid ActiveWorkbook.Sheets("Invoice").Range("D16").Value = basefee ActiveWorkbook.Sheets(“invoice”).Range("E4").Value = invoicedate path = "C:\Users\Andrew\Dropbox (Updox)\All Company\DEPT-Finance\Billing\Greenway\Invoices\2015Invoices\" mydate = Date mydate = Format(mydate, “mm.yy”) ActiveWorkbook.SaveAs Filename:=path & “_” & customername & “_” & mydate & “.xlsx” myfilename = ActiveWorkbook.FullName SetAttr myfilename, vbReadOnly Application.DisplayAlerts = True ActiveWorkbook.PrintOut copies:=1 ActiveWorkbook.Close SaveChanges:=False nextrow: Next r End Sub 

也许你应该试试这个,find列A中的最后一行,并解决“运行时错误1004”:

 With Sheets("Greenway") lastrow = .Range("A" & .Rows.Count).End(xlUp).Row End With 

要么:

 lastrow = Sheets("Greenway").Range("A" & Sheets("Greenway").Rows.Count).End(xlUp).Row 

代替:

 lastrow = Sheets("Greenway").Range(“A” & Rows.Count).End(xlUp).Row 

请注意Rows之前的点( . )分隔符,以指示您要获取属性行(“Greenway”)对象的属性。


对于你现在得到的错误“运行时错误9”,请尝试:

 customer = Sheets("Greenway").Cells(r, 3).Value 

代替:

 customer = ThisWorkbook.Sheets(“Greenway”).Cells(r, 3).Value 

希望它是有用的!