Изображение шаблона счета-фактуры
Я печатаю счета-фактуры в Excel, используя приведенный выше шаблон, где сведения о шаблонах извлекаются из рабочего листа с каждой строкой, содержащей данныеодной накладной.
На каждой странице есть два накладных, и я хочу настроить их так, чтобы я мог распечатывать накладные только определенного покупателя за раз. Имя клиента - wks1.Cells(i, 6).Value
.
. Я пытался использовать простые операторы If
в цикле For
, но независимо от того, что я делаю, только первый счет на странице печатается ссоответствующий клиент. Второй счет пуст.
Использование настраиваемого фильтра и выбор только клиента, для которого я хочу распечатать счета, не помогает, поскольку код обрабатывает каждую строку независимо от фильтра. Я не возражаю против того, чтобы имя клиента было жестко закодировано в VBA.
Я просто хочу, чтобы оба счета на странице были распечатаны последовательно на основе значения wks1.Cells(i, 6).Value
.
Вот мой код
Sub Button1_Click()
Dim wks1 As Worksheet, wks2 As Worksheet
// Data Source
Set wks1 = Sheets("Data")
// Invoice Template
Set wks2 = Sheets("Template")
Dim i As Integer
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
// Make a temporary working copy
wks2.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "wks3"
Set wks3 = Sheets("wks3")
// Fill the details for the first invoice in the page
wks3.Range("C3").Value = wks1.Cells(i, 1).Value
wks3.Range("C5").Value = wks1.Cells(i, 2).Value
wks3.Range("F14").Value = wks1.Cells(i, 3).Value & " days at " & ChrW(&H20B9) & " " & wks1.Cells(i, 4).Value & " per day "
wks3.Range("C7").Value = wks1.Cells(i, 5).Text
wks3.Range("I18").Value = wks1.Cells(i, 5).Text
// wks1.Cells(i, 6).Value = Customer Name
wks3.Range("C9").Value = " " & wks1.Cells(i, 6).Value
wks3.Range("C12").Value = " " & wks1.Cells(i, 7).Value
wks3.Range("C14").Value = wks1.Cells(i, 8).Value
wks3.Range("C16").Value = wks1.Cells(i, 9).Value
wks3.Range("C18").Value = wks1.Cells(i, 10).Value
wks3.Range("D21").Value = wks1.Cells(i, 11).Value
// Increment "i" to process the next row in the Data Source worksheet
i = i + 1
// Fill the details for the second invoice in the page
wks3.Range("C27").Value = wks1.Cells(i, 1).Value
wks3.Range("C29").Value = wks1.Cells(i, 2).Value
wks3.Range("F38").Value = wks1.Cells(i, 3).Value & " days at " & ChrW(&H20B9) & " " & wks1.Cells(i, 4).Value & " per day "
wks3.Range("C31").Value = wks1.Cells(i, 5).Text
wks3.Range("I42").Value = wks1.Cells(i, 5).Text
// wks1.Cells(i, 6).Value = Customer Name
wks3.Range("C33").Value = " " & wks1.Cells(i, 6).Value
wks3.Range("C36").Value = " " & wks1.Cells(i, 7).Value
wks3.Range("C38").Value = wks1.Cells(i, 8).Value
wks3.Range("C40").Value = wks1.Cells(i, 9).Value
wks3.Range("C42").Value = wks1.Cells(i, 10).Value
wks3.Range("D45").Value = wks1.Cells(i, 11).Value
// Save temporary working sheet as PDF
wks3.Range("A1:L48").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\pdf\" & wks1.Cells(i - 1, 1).Value & "-" & wks1.Cells(i, 1).Value
// Delete temporary working sheet after PDF is saved
Application.DisplayAlerts = False
wks3.Delete
Application.DisplayAlerts = True
wks1.Activate
Next i
End Sub