Özellik ikonu

PrintPreview

İndirme izni yok

Genel Bakış

PrintPreview (Worksheet.PrintPreview), belirtilen çalışma sayfasını yazıcıdan çıkmadan önce Baskı Önizleme ekranında açan bir yöntemdir. Sayfanın kağıt üzerinde nasıl görüneceğini, sayfa sonlarını ve kenar boşluklarını kontrol etmek için kullanılır. Aynı yöntem Workbook, Window, Range ve Chart nesnelerinde de bulunur.

Söz dizimi​

Yöntem, bir çalışma sayfası nesnesi üzerinden şu biçimde çağrılır:
VBA 5 satır
ifade.PrintPreview(EnableChanges)

' Örnek
Worksheets("Rapor").PrintPreview
Worksheets("Rapor").PrintPreview EnableChanges:=False
  • ifade: Bir Worksheet (ya da Workbook, Range, Chart, Window) nesnesini veren ifade; zorunludur.
  • EnableChanges: İsteğe bağlı Variant değerdir. True ise kullanıcı önizleme sırasında sayfa yapısı seçeneklerini değiştirebilir. False ise değişikliğe izin verilmez. Varsayılanı True'dur.
Yöntem bir değer döndürmez. Bu yüzden parantezsiz, Call kullanmadan çağırabilirsiniz.

Nasıl çalışır​

PrintPreview çağrıldığında Excel, Baskı Önizleme görünümünü açar. Kullanıcı önizlemeyi kapatıncaya kadar makro bu satırda bekler; kapatılınca kodun sonraki satırı çalışır. Bu nedenle önizlemeden sonra çalışmasını istediğiniz kodu yöntemin altına yazabilirsiniz.

Önizleme, sayfanın o anki sayfa yapısı ayarlarına göre hazırlanır. Yani yönlendirme, kağıt boyutu, yazdırma alanı, üst ve alt bilgiler, sayfa sonları ve ölçekleme PageSetup nesnesindeki değerlere göre görünür. Önizlemeyi kodla açmak, kullanıcının Dosya > Yazdır (File > Print) ekranını açmasına ya da Ctrl+F2 tuşlarına basmasına benzer bir sonuç verir.

Önizleme ekranında yazdırma düğmesi de bulunur; kullanıcı isterse oradan yazdırabilir. Makro ise yalnızca önizlemeyi açar, yazdırmayı kendiliğinden başlatmaz.

EnableChanges parametresi ve yazıcı gereksinimi​

  • True (varsayılan): Kullanıcı önizleme ekranından kenar boşluklarını ve sayfa yapısı ayarlarını değiştirebilir. Bu değişiklikler çalışma sayfasının sayfa yapısına işlenir.
  • False: Önizleme salt görüntüleme amaçlıdır; kullanıcı ayar değiştiremez. Hazırladığınız düzenin bozulmasını istemediğiniz raporlarda uygundur.
Önizleme, sayfa ölçülerini yazıcı sürücüsünden aldığı için bilgisayarda varsayılan bir yazıcının tanımlı olması gerekir. Yazıcı yoksa ya da erişilemiyorsa yöntem çalışma zamanı hatası (1004) verebilir. Bu riski On Error ile yönetebilirsiniz.

1. Sayfayı önizlemede açma​

Aşağıdaki makroyu standart bir modüle (Ekle > Modül) yapıştırın. Makro, Satış Raporu sayfasını Baskı Önizleme ekranında açar. Kullanıcı önizlemeyi kapatana kadar kod bekler.
VBA 6 satır
Option Explicit

Sub RaporuOnizle()
    ' Satış Raporu sayfasını varsayılan ayarlarla önizlemede açar
    Worksheets("Satış Raporu").PrintPreview
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.
ABC
1ÜrünŞehirTutar
2Kalem SetiAnkara1.250,00
3Defterİzmir980,50
4DosyaBursa640,00
5AjandaAdana1.475,75
Satış RaporuExcelDepo v1.0.0
Makro çalıştırıldığında Excel, sayfayı Baskı Önizleme görünümünde açar ve önizleme kapatılana kadar bekler. Bu örnek ekran açtığı için burada otomatik çalıştırılmamıştır; kendi bilgisayarınızda deneyebilirsiniz.

2. Önizlemeden önce veri kontrolü​

Raporu önizlemeye göndermeden önce tutar sütununda boş hücre olup olmadığını denetlemek iyi bir alışkanlıktır. Aşağıdaki makroyu standart modüle yapıştırın; makro her satırı denetler ve D sütununa sonuç yazar. Önizleme satırını (Worksheets("Kontrol") nesnesine bağlı PrintPreview çağrısı) bu denetimin ardına ekleyebilirsiniz.
VBA 17 satır
Option Explicit

Sub OnizlemeOncesiKontrol()
    Dim ws As Worksheet
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Kontrol")

    ' 2. satırdan 7. satıra kadar tutar sütununu denetle
    For i = 2 To 7
        If IsEmpty(ws.Cells(i, 3).Value) Then
            ws.Cells(i, 4).Value = "Eksik"
        Else
            ws.Cells(i, 4).Value = "Hazır"
        End If
    Next i
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünŞehirTutarSonuç
2Kalem SetiAnkara1.250,00Hazır
3DefterİzmirEksik
4DosyaBursa640,00Hazır
5AjandaAdana1.475,75Hazır
6KlasörKonyaEksik
7ZımbaAntalya310,00Hazır
KontrolExcelDepo v1.0.0
Makro her satırın tutar hücresine bakar. 2. satır için sonuç Hazır, 3. satır için Eksik, 6. satır için Eksik olarak yazılır. Tutarı boş olan satırlar Eksik olarak işaretlenir; böylece raporu önizlemeye göndermeden önce eksikleri tamamlayabilirsiniz.

3. Değişikliğe kapalı önizleme ve hata yönetimi​

Aşağıdaki makro, önizlemeyi EnableChanges değeri False olarak açar ve yazıcı bulunamadığı durumda oluşabilecek hatayı yakalar. Kodu standart bir modüle yapıştırın.
VBA 16 satır
Option Explicit

Sub KilitliOnizleme()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Aylık Özet")

    On Error GoTo Hata

    ' Kullanıcı sayfa yapısını değiştiremesin
    ws.PrintPreview EnableChanges:=False
    Exit Sub

Hata:
    ' Yazıcı tanımlı değilse ya da önizleme açılamadıysa buraya düşer
    MsgBox "Önizleme açılamadı. Yazıcı ayarlarınızı denetleyin." & vbCrLf & Err.Description, vbExclamation
End Sub
PrintPreview
Formülünü incelemek için bir hücre seçin.
ABC
1AyŞubeCiro
2Ocakİstanbul45.200,00
3ŞubatAnkara38.750,50
4Martİzmir41.300,00
Aylık ÖzetExcelDepo v1.0.0
Makro çalıştığında Aylık Özet sayfası önizlemede açılır ve kullanıcı sayfa yapısı ayarlarını değiştiremez. Önizleme açılamazsa hata etiketine geçilir ve bir uyarı iletisi görüntülenir. Bu örnekte ekran ve ileti penceresi bulunduğundan makro otomatik çalıştırılmamıştır.

Kullanırken dikkat edin​

  • Makro önizleme kapanana kadar bekler: PrintPreview çağrısından sonraki satırlar, kullanıcı önizlemeyi kapatana kadar çalışmaz. Önizlemeden sonra yapılacak işlemleri bu satırın altına yazın; zamanlayıcı ya da bekleme döngüsü kullanmanıza gerek yoktur.
  • Yazıcı tanımlı olmalıdır: Önizleme sayfa ölçülerini yazıcı sürücüsünden aldığı için bilgisayarda varsayılan yazıcı yoksa 1004 numaralı çalışma zamanı hatası alabilirsiniz. Dağıttığınız dosyalarda On Error ile hatayı yakalamanız önerilir.
  • EnableChanges değerini bilinçli seçin: Varsayılan değer True olduğundan kullanıcı önizleme sırasında sayfa yapısını değiştirebilir. Hazırladığınız düzenin korunmasını istiyorsanız EnableChanges:=False yazın.
  • Önizleme yazdırmaz: Yöntem yalnızca önizlemeyi açar. Kağıda yazdırmak için PrintOut yöntemini kullanmanız gerekir. Kullanıcı isterse önizleme ekranındaki yazdırma düğmesiyle yazdırabilir.
  • Doğru sayfa ve ayarlar: Önizleme, çağrıldığı nesneye göre açılır. Worksheet üzerinde çağırırsanız yalnızca o sayfa, Workbook üzerinde çağırırsanız çalışma kitabındaki sayfalar önizlenir. Önizlemeden önce PageSetup ayarlarını (yön, ölçek, yazdırma alanı) düzenlemek, beklenmedik sayfa sonlarını önler.
  • İlgili konular:
    • PrintOut: Sayfayı ya da çalışma kitabını yazıcıya gönderen yöntem.
    • PageSetup: Yön, kağıt boyutu, kenar boşlukları, üst ve alt bilgi gibi sayfa yapısı ayarlarını tutan nesne.
    • PrintArea: PageSetup nesnesinin yazdırma alanını belirleyen özelliği.
    • HPageBreaks ve VPageBreaks: Yatay ve dikey sayfa sonlarını yöneten koleksiyonlar.
    • Dosya > Yazdır (File > Print): Elle önizleme ve yazdırma ekranı.
    • On Error: Hata yakalama deyimi.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
11
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst