Nie do końca rozumiem ograniczenia do 1000 w makrze autora. Niby logiczne że po co aż tyle, ale jeżeli rzeczywiście byłoby tyle danych to czego tego nie drukować.
Nie zmieniałem idei autora ale pozwoliłem sobie trochę ją uporządkować (przy czym wyrzuciłem ten 1000 ale jak trzeba to ...)
Zamknąłem wszystko w pętli Do While .. Loop by robiło się do końca danych z Arkusz1 i na razie "wyłączyłem" wydruki (apostrof przed linią kodu) by nie marnować kartek.
Dodałem ramki, wielkość czcionki i czyszczenie danych po wydruku.
Sub Petla()
Dim NumerWiersza As Integer
Dim NumerKolumny As Integer
Do While Arkusz1.Range("A2") <> ""
If Arkusz1.Range("Z2").Value <> "." Then
Arkusz3.Range("D10").Value = Arkusz1.Range("P2").Value
Arkusz3.Range("D11").Value = Arkusz1.Range("R2").Value
key = MsgBox("Nie widnieje w ewidencji." & Chr(10) & Chr(10) & "Czy drukować Arkusz3", vbYesNo)
' If key = 6 Then Arkusz3.PrintOut Copies:=1
'czyszczenie danych
Arkusz1.Rows("2:2").Delete Shift:=xlUp
Arkusz3.Range("D10").Value = ""
Arkusz3.Range("D11").Value = ""
Else
PESEL = WorksheetFunction.CountIf(Arkusz1.Range("B1:B100"), Arkusz1.Range("B2").Value)
NumerWiersza = 13
NumerKolumny = 1
For kolumna = 1 To PESEL
Arkusz2.Range("E10").Value = Arkusz1.Range("P2").Value
Arkusz2.Range("G10").Value = Arkusz1.Range("R2").Value
Arkusz2.Range("E11").Value = Arkusz1.Range("U2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny).Value = Arkusz1.Range("AF2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 1).Value = Arkusz1.Range("AB2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 2).Value = Arkusz1.Range("AD2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 3).Value = Arkusz1.Range("AE2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 4).Value = Arkusz1.Range("AI2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 5).Value = Arkusz1.Range("AG2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 6).Value = Arkusz1.Range("AA2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 7).Value = Arkusz1.Range("AJ2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 8).Value = Arkusz1.Range("AN2").Value
Arkusz2.Cells(NumerWiersza, NumerKolumny + 9).Value = Arkusz1.Range("AO2").Value
Arkusz1.Rows("2:2").Delete Shift:=xlUp
NumerWiersza = NumerWiersza + 1
Next kolumna
'Ramki
Arkusz2.Range(Cells(13, NumerKolumny), Cells(NumerWiersza - 1, NumerKolumny + 9)).Select
Selection.Font.Size = 8
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
Selection.Borders(xlInsideVertical).LineStyle = xlContinuous
If NumerWiersza > 14 Then Selection.Borders(xlInsideHorizontal).LineStyle = xlContinuous
key = MsgBox("Czy drukować Arkusz2", vbYesNo)
'If key = 6 Then Arkusz2.PrintOut Copies:=1
'Czyszczenie danych
Arkusz2.Range("E10").Value = ""
Arkusz2.Range("G10").Value = ""
Arkusz2.Range("E11").Value = ""
Arkusz2.Range(Cells(13, NumerKolumny), Cells(NumerWiersza - 1, NumerKolumny + 9)).Delete Shift:=xlUp
End If
Loop
End Sub
Poniżej przykład
dodane po chwili
-----------------------------------
Coś mam kłopoty z odświeżaniem forum. Po umieszczeniu mojego tekstu dopiero widzę wasze wpisy - nie wiem co jest.
W takim wypadku jestem nie na czasie, więc sorki.
dodane po kolejnej chwili
---------------------------
Już wiem co było nie tak. Aż wstyd się przyznać. Odświeżałem pierwszą stronę dyskusji. Chyba jestem już śpiący.