Soru Değişken satırlı tabloların bölünmemesi

Katılım
20 Eylül 2006
Mesajlar
77
Excel Vers. ve Dili
Excel 2013 TR
Arkadaşlar merhaba,
Elimdeki tablo boyutunu makro ile süzerek değişken satır sayısına getiriyorum. Ancak çıktı almak istediğimde, alt alta yer alan yer alan birbirinden bağımsız yaklaşık 200 tablonun (tablo yarıda kesilecek ise bir sonraki sayfada çıktı alması için) makro ile çıktı ayarını yapmak istiyorum. Her tablo 33 satırdan oluşuyor gözükse de, süz sonrası kimi 6 kimi 10 kimi ise 20 veya 29 satır oluyor. Dolayısı ile çıktı sayfasına kaç tablo geleceği belirsiz.

Yapmak istediğim, örneğin;

3 tablo ilk sayfada tam olarak çıkarken, 4.tablonun yarısı çıktı alınacak sayfa içeriğinde gözüküyor. Oysaki yapmak isteğim şey, 4.tablo bölünüyor ise bu tabloyu 2.sayfa olarak çıktıya ayarlamak.

Başka bir söylem ile;
Yazdırma alanının A1-F50 olduğunu ve sabit olduğunu düşünürsek, süz sonrası bu alan sonuna gelen son tablo başı veya tablo sonu F50'ye gelse bile, bir sonraki sayfa olarak çıktı alınması.

Bu konuda nasıl bir fikir verebilir veya makro çalışması yapabiliriz.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
392
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Örnek dosya ile çok daha sağlıklı olabilirdi fakat Yazdırma Alanı'nı dinamik şekilde kullanarak istediğinize ulaşabilirsiniz. Aşağıdaki kod öbeğini bir döngü ile destekleyip satır numaralarını da tablo alanlarına göre şekillendirebilir, kodun sonuna PrintOut yapabilirsiniz.

ActiveSheet.PageSetup.PrintArea = "$A$1:$L$25"
 
Katılım
20 Eylül 2006
Mesajlar
77
Excel Vers. ve Dili
Excel 2013 TR
Merhaba,

Örnek dosya ile çok daha sağlıklı olabilirdi fakat Yazdırma Alanı'nı dinamik şekilde kullanarak istediğinize ulaşabilirsiniz. Aşağıdaki kod öbeğini bir döngü ile destekleyip satır numaralarını da tablo alanlarına göre şekillendirebilir, kodun sonuna PrintOut yapabilirsiniz.

ActiveSheet.PageSetup.PrintArea = "$A$1:$L$25"

Fikir için teşekkür ederim üstad. Bu yöntem aklıma geldi lakin döngülerde bir yerde hata yapıyorum sanıyorum ki tam olarak oturtamadım. Zira süz yapıldığında (verdiğiniz alandan yol çıkarak) 24.satıra tablo başlığı geldiğinde problem devam ediyor gibi gözüküyor.

Aklın yolu bir demişler. Aynı şeyi düşündüğümüze göre doğru yol üzerindeyim demektir :) bu fikir üzerinde biraz daha çalışmam gerekecek demek ki :)

Dosya demişsiniz lakin, dosya yükleme yapamadığımdan ötürü ekleme yapamıyorum. Özür dilerim.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
392
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Günaydın, https://dosya.co/ gibi dış bağlantı sitelerine örnek dosya yükleyip burada link paylaşabilirsiniz. Fakat benzer bir durumda şöyle ilerlemiştim, ilk 3 satır başlıklardı ve onları Yazdırma Başlıkları olarak sabitledim. Kalan kısmı da döngü içinde parçalayıp çıktı alabilmiştim. Hatta başka bir tablomda da toplam satır sayısına göre en son sayfa çeyrek sayfadan az olmuşsa sayfa sayısını azaltabileceğim bir kodum vardı, belki faydalı olur.

Dim satirsayisi As Integer
Dim yazici As String
satirsayisi = Yazdir.Range("A" & Rows.Count).End(xlUp).Row 'Tüm Tablo Alanı
yazici = Application.Dialogs(xlDialogPrinterSetup).Show 'Yazıcı seçme dialog kutusu
If yazici = False Then Exit Sub 'İptal durumu
Yazdir.PageSetup.PrintArea = "$A$1:$D$" & satirsayisi 'Yazdırma alanı
If (satirsayisi / 62) - Int(satirsayisi / 62) < 0.25 Then 'Yazdırma alanı 62 satıra göre ayarlandığında çeyrek sayfadan az kalıyorsa tam sayıya yuvarla
yalan = Int(satirsayisi / 62)
Else
yalan = Int(satirsayisi / 62) + 1
End If
Yazdir.PageSetup.FitToPagesTall = yalan 'Yazdırılacak dikey sayfa sayısı
Yazdir.PrintOut 'Yazdır
Yazdir.Cells.ClearContents 'Temizle
 
Katılım
20 Eylül 2006
Mesajlar
77
Excel Vers. ve Dili
Excel 2013 TR
Günaydın, https://dosya.co/ gibi dış bağlantı sitelerine örnek dosya yükleyip burada link paylaşabilirsiniz. Fakat benzer bir durumda şöyle ilerlemiştim, ilk 3 satır başlıklardı ve onları Yazdırma Başlıkları olarak sabitledim. Kalan kısmı da döngü içinde parçalayıp çıktı alabilmiştim. Hatta başka bir tablomda da toplam satır sayısına göre en son sayfa çeyrek sayfadan az olmuşsa sayfa sayısını azaltabileceğim bir kodum vardı, belki faydalı olur.

Dim satirsayisi As Integer
Dim yazici As String
satirsayisi = Yazdir.Range("A" & Rows.Count).End(xlUp).Row 'Tüm Tablo Alanı
yazici = Application.Dialogs(xlDialogPrinterSetup).Show 'Yazıcı seçme dialog kutusu
If yazici = False Then Exit Sub 'İptal durumu
Yazdir.PageSetup.PrintArea = "$A$1:$D$" & satirsayisi 'Yazdırma alanı
If (satirsayisi / 62) - Int(satirsayisi / 62) < 0.25 Then 'Yazdırma alanı 62 satıra göre ayarlandığında çeyrek sayfadan az kalıyorsa tam sayıya yuvarla
yalan = Int(satirsayisi / 62)
Else
yalan = Int(satirsayisi / 62) + 1
End If
Yazdir.PageSetup.FitToPagesTall = yalan 'Yazdırılacak dikey sayfa sayısı
Yazdir.PrintOut 'Yazdır
Yazdir.Cells.ClearContents 'Temizle
Teşekkürler üstad. Biraz ilgileneyim, işin içinden çıkamaz isem dosya paylaşımı yaparım.
 
Üst