Soru Sayfa yazdırırken sayfa taştığında sayfa düzenini sığdır

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Sizin dediğiniz gibi If ActiveSheet.HPageBreaks(1).Location.Row <= 65 Then bu kısımdaki 65'i 24 olarakta denedim, 25 olarakta denedim valla yine küçük yazdırıyor
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Sayın Mustafa Bey, sizin dediğiniz gibi If ActiveSheet.HPageBreaks(1).Location.Row <= 65 Then bu kısımdaki 65'i 24 olarakta denedim, 25 olarakta denedim valla yine küçük yazdırıyor, yani tek sayfada yazdırıyor.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
İsteğinize göre olması gereken de bu değil mi zaten. 65. satır ve aşağısı 2. Sayfaya taşarsa tek sayfaya sığdırması gerekiyor. Tek sayfaya sığdırmaması için 3 ve daha fazla sayfanın oluşması gerekli.
Benim yazdığım kod zaten toplam sayfa sayısı 2 ise devreye giriyor. Diğer durumlarda devreye girmiyor. Şimdi deneme yaptım. 2'nin üzerindeki sayfalarda kod devreye girmedi. Yazıcı ayarınızı pdf'ye getirip deneme yapabilirsiniz. Eklediğim kod Sayfa sayısını ve 2. sayfanın başına gelen satır numarasını bildirerek işlem yapacak. Açıklamalarda eksik bıraktığınız bir şeyler olabilir.
Kod:
'-----Eğer 2. sayfaya taşmış ise satırları tek sayfaya sığdır-------
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet.PageSetup
   .Zoom = 100
   MsgBox "sayfa: " & ActiveSheet.PageSetup.Pages.Count
    If ActiveSheet.PageSetup.Pages.Count = 2 Then
    ActiveWindow.View = xlPageBreakPreview
      If ActiveSheet.HPageBreaks(1).Location.Row <= 65 Then
      MsgBox "satır: " & ActiveSheet.HPageBreaks(1).Location.Row
        .Zoom = False
        .FitToPagesWide = 0
        .FitToPagesTall = 1
      End If
    ActiveWindow.View = xlNormalView
    End If
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=yazdir, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PageSetup.Zoom = 100
Err.Clear
'--------------------------------------------------------------------
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Sayın Mustafa Bey, anladım dediğinizi, sayfa şekilsiz çıkıyor diye bu şekilde istemiştim.

Normal sayfayı yazdırdığımda, sayfanın alt tarafındaki ilçelerin toplamlarında bir kaç ilçe 2.sayfaya taştığı için görüntü biçimsiz olduğu için böyle bir kaç satır 2.sayfaya taşarsa sayfayı küçülterek 1 sayfa olarak yazdırmasını istemiştim. Zaten şimdiye kadar hep ya 1 sayfa yada 2 sayfa çıktı aldım, hiç 3 sayfa çıktı olmadı.

Sizden Allah razı olsun, uğraştırdım kusura bakmayın, benim tam istediğim gibi olmuyor galiba.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Tamam, sanırım şimdi ne demek istediğinizi tam olarak anladım. Yine olmazsa yarın devam ederiz. Aşağıdaki kodu deneyiniz:
Kod:
'-----Eğer 2. sayfaya taşmış ise satırları tek sayfaya sığdır-------
On Error Resume Next
Application.ScreenUpdating = False
With ActiveSheet.PageSetup
   .Zoom = 100
    If ActiveSheet.PageSetup.Pages.Count = 2 Then
    ActiveWindow.View = xlPageBreakPreview
     If ActiveSheet.HPageBreaks(1).Location.Row >= 65 Then
        .Zoom = False
        .FitToPagesWide = 0
        .FitToPagesTall = 1
      End If
    ActiveWindow.View = xlNormalView
    End If
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=yazdir, Collate:=True, _
IgnorePrintAreas:=False
ActiveSheet.PageSetup.Zoom = 100
Err.Clear
'--------------------------------------------------------------------
 
Son düzenleme:

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Sayın Mustafa Bey, çok teşekkür ediyorum, sizi uğraştırdım kusura bakmayın, istediğim tam bu idi.

Hayırlı geceler diliyorum.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Rica ederim. Hayırlı geceler...
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Aslan bey, tam istediğim demişsiniz ama kodda bir eksiklik farkettim. Son eklediğim kodu yeniden düzenledim. If ActiveSheet.HPageBreaks(1).Location.Row >= 65 Then
 

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Mustafa Bey, aşağıdaki kod önceki hataları veriyordu zaten.
If ActiveSheet.HPageBreaks(1).Location.Row >= 65 Then

Demek istediğiniz aşağıdaki kod galiba bu şekilde mi düzelteyim.
If ActiveSheet.UsedRange.Rows.Count >= 65 Then
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Siz verileriniz, 2. Sayfaya az bir mikrar taşarsa kağıt tasarrufu için 1 sayfaya sığmasını istiyorsunuz. Bunun için de 65. Satırı ölçüt olarak belirlemişsiniz. Son eklediğim kod 2. Sayfanın ilk satır numarasına bakıyor, eğer 65 ve üzeriyse 1 sayfaya sığdırıyor. Örneğin 65. Satır 2. Sayfabın 1. Satırına denk geldiğinde boyut 1,5 sayfa olsun. 72. Satır 2. Sayfanın 1. Satırına denk geldiğinde sayfa boyutu azalacak, 1 sayfaya sığdırmak için daha uygun hale gelecek. Dolayısıyla kodun son düzenlenmiş şeklinin doğru sonucu vermesi gerekiyor.
Aslında kodun ilk şekli doğruymuş. Muhtemelen hata veren satırdan dolayı istediğimiz sonucu alamadık. O sorunu çözdüğümüze göre kod son şekliyle doğru sonucu verecektir diye düşünüyorum.
Evet, yanlışlık yok, olması gereken satır bu: ActiveSheet.HPageBreaks(1).Location.Row >= 65 Then
 
Son düzenleme:

ASLAN7410

Altın Üye
Altın Üye
Katılım
15 Temmuz 2012
Mesajlar
2,790
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Sayın Mustafa Bey, ilginiz için çok teşekkür ediyorum, ellerinize sağlık.

Hayırlı akşamlar, hayırlı çalışmalar diliyorum.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Rica ederim. Hayırlı akşamlar.
 
Üst