LİNDA
Gold Üye
- Katılım
- 4 Haz 2021
- Mesajlar
- 317
- Çözümler
- 1
- Aldığı beğeni
- 95
- Excel V
- Office 2019 TR
- Gold Bitiş
- 15 Nisan 2026
Konu Sahibi
Merhaba site dostlarının yardımıyla yapmaya çalıştığım işletme defterimde şu sorunla karşılaştım.Kullanılan kodlarda GELİR 2024 sayfasındaki yazdır düğmesi ile her 35 satırda bir önceki sayfanın F sütununu devreden bakiye satırı olarak ekliyor ve sonra yeni sayfanın verileri geliyor..Ama 69,70,71 sayfada ise devrenden bakiye satırı eklenmiyor.Gelir ve giderin kaç sayfa veri içereceğini önceden bilemiyorum Sorunun nerede olduğunu bulamadım.Aynı şekilde 2024 işletme sayfasında ise benzer kodları kullandım
Sub Yazdır()
Dim ws As Worksheet, PrntWs As Worksheet
Dim lastRow As Long, PageBreak As Long, i As Long, RowCount As Long, LTData As Long
Set ws = ActiveSheet
ws.Copy After:=ws
Set PrntWs = ActiveSheet
PrntWs.PageSetup.PrintArea = ""
PrntWs.PageSetup.PrintTitleRows = "$1:$3" 'Sayfa başlıkları ilk 3 satır olacak şekilde ayarlandı
lastRow = PrntWs.Cells(PrntWs.Rows.Count, "B").End(xlUp).Row 'Son işlenen tarih satırını bul
LTData = PrntWs.Cells(PrntWs.Rows.Count, "A").End(xlUp).Row 'A sütununda sayfa sonunu bul
If LTData > lastRow Then
Range("A" & lastRow + 1 & ":A" & LTData - 1).EntireRow.Delete 'B'ye göre gereksiz A satırlarını sayfasonuna kadar sil
End If
RowCount = 41 'Sayfa başına 41 satır belirle
toplam = lastRow + Val(lastRow / RowCount)
For i = RowCount To toplam Step RowCount
'Sayfa üzerinde her 41 satırda bir PageBreak ekle
PrntWs.Rows(i + 1).Insert Shift:=xlDown 'PageBreak öncesi devreden bakiye satırı ekle
PrntWs.HPageBreaks.Add Before:=PrntWs.Rows(i + 1) 'PageBreak ekle
lastRow = lastRow + 1 'Devreden bakiye için eklenen satır nedeni ile LastRow'u 1 arttır
PageBreak = i + 1
PrntWs.Cells(PageBreak, "d").Value = "ÖNCEKİ SAYFADAN DEVREDEN "
PrntWs.Cells(PageBreak, "d").Font.Color = vbRed
PrntWs.Cells(PageBreak, "d").Font.Bold = True
PrntWs.Cells(PageBreak, "k").Value = "ÖNCEKİ SAYFADAN DEVREDEN "
PrntWs.Cells(PageBreak, "k").Font.Color = vbRed
PrntWs.Cells(PageBreak, "k").Font.Bold = True
'F hücresine bir önceki sayfanın son F değerini devreden bakiye satırına yaz
If PageBreak > 1 Then
PrntWs.Cells(PageBreak, "f").Value = PrntWs.Cells(PageBreak - 1, "f").Value
PrntWs.Cells(PageBreak, "f").Font.Color = vbRed
PrntWs.Cells(PageBreak, "f").Font.Bold = True
PrntWs.Cells(PageBreak, "m").Value = PrntWs.Cells(PageBreak - 1, "m").Value
PrntWs.Cells(PageBreak, "m").Font.Color = vbRed
PrntWs.Cells(PageBreak, "m").Font.Bold = True
End If
Next i
lastRow = PrntWs.Cells(PrntWs.Rows.Count, "E").End(xlUp).Row 'Düzenlemeye göre son satırı yeniden bul
PrntWs.PageSetup.PrintArea = "$A$1:$m" & lastRow 'A:m sütunları arasını yazdırm alanı olarak belirle
PrntWs.PrintPreview 'Düzenlenen sayfayı yazdır
Application.DisplayAlerts = False
PrntWs.Delete 'Print düzenlemesi için oluşturulan kopya sayfayı sil
Application.DisplayAlerts = True
Cancel = False
End Sub
yine aynı sorun oluşuyor son 3-4 sayfada.Ve sayfa sonları açık kalıyor. Eklediğim resimdeki G1 gibi olması gerekiyor. Hatamı bulamadım yardımcı olabilecek
Sub Yazdır()
Dim ws As Worksheet, PrntWs As Worksheet
Dim lastRow As Long, PageBreak As Long, i As Long, RowCount As Long, LTData As Long
Set ws = ActiveSheet
ws.Copy After:=ws
Set PrntWs = ActiveSheet
PrntWs.PageSetup.PrintArea = ""
PrntWs.PageSetup.PrintTitleRows = "$1:$3" 'Sayfa başlıkları ilk 3 satır olacak şekilde ayarlandı
lastRow = PrntWs.Cells(PrntWs.Rows.Count, "B").End(xlUp).Row 'Son işlenen tarih satırını bul
LTData = PrntWs.Cells(PrntWs.Rows.Count, "A").End(xlUp).Row 'A sütununda sayfa sonunu bul
If LTData > lastRow Then
Range("A" & lastRow + 1 & ":A" & LTData - 1).EntireRow.Delete 'B'ye göre gereksiz A satırlarını sayfasonuna kadar sil
End If
RowCount = 41 'Sayfa başına 41 satır belirle
toplam = lastRow + Val(lastRow / RowCount)
For i = RowCount To toplam Step RowCount
'Sayfa üzerinde her 41 satırda bir PageBreak ekle
PrntWs.Rows(i + 1).Insert Shift:=xlDown 'PageBreak öncesi devreden bakiye satırı ekle
PrntWs.HPageBreaks.Add Before:=PrntWs.Rows(i + 1) 'PageBreak ekle
lastRow = lastRow + 1 'Devreden bakiye için eklenen satır nedeni ile LastRow'u 1 arttır
PageBreak = i + 1
PrntWs.Cells(PageBreak, "d").Value = "ÖNCEKİ SAYFADAN DEVREDEN "
PrntWs.Cells(PageBreak, "d").Font.Color = vbRed
PrntWs.Cells(PageBreak, "d").Font.Bold = True
PrntWs.Cells(PageBreak, "k").Value = "ÖNCEKİ SAYFADAN DEVREDEN "
PrntWs.Cells(PageBreak, "k").Font.Color = vbRed
PrntWs.Cells(PageBreak, "k").Font.Bold = True
'F hücresine bir önceki sayfanın son F değerini devreden bakiye satırına yaz
If PageBreak > 1 Then
PrntWs.Cells(PageBreak, "f").Value = PrntWs.Cells(PageBreak - 1, "f").Value
PrntWs.Cells(PageBreak, "f").Font.Color = vbRed
PrntWs.Cells(PageBreak, "f").Font.Bold = True
PrntWs.Cells(PageBreak, "m").Value = PrntWs.Cells(PageBreak - 1, "m").Value
PrntWs.Cells(PageBreak, "m").Font.Color = vbRed
PrntWs.Cells(PageBreak, "m").Font.Bold = True
End If
Next i
lastRow = PrntWs.Cells(PrntWs.Rows.Count, "E").End(xlUp).Row 'Düzenlemeye göre son satırı yeniden bul
PrntWs.PageSetup.PrintArea = "$A$1:$m" & lastRow 'A:m sütunları arasını yazdırm alanı olarak belirle
PrntWs.PrintPreview 'Düzenlenen sayfayı yazdır
Application.DisplayAlerts = False
PrntWs.Delete 'Print düzenlemesi için oluşturulan kopya sayfayı sil
Application.DisplayAlerts = True
Cancel = False
End Sub
yine aynı sorun oluşuyor son 3-4 sayfada.Ve sayfa sonları açık kalıyor. Eklediğim resimdeki G1 gibi olması gerekiyor. Hatamı bulamadım yardımcı olabilecek