• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Excel Sayfasını Önizleme Yaparken Tüm Sayfaları Göstermiyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Mtudes

Yeni Üye
Katılım
30 Ağu 2021
Mesajlar
270
Çözümler
1
Aldığı beğeni
97
Excel V
Office 2016 TR
Konu Sahibi
Merhaba
Ben bir sayfadaki verileri çıktı olarak alıyorum.Aşağıdaki kodla önizleme yaparken sadece ilk sayfayı görebiliyorum.Yazdır deyince ise tümünü yazdırıyor.Önizlemede normalde kaç sayfaysa hepsini göremiyorum .Sadece bir sayfa çıkıyor .sayfa sayısının yer alması gereken sol alt köşede erişilebilirlik:Önerilere göz atın şeklinde bir yazı çıkıyor. Yazıcıya bağlanmak için kullandığım kodda aşağıdaki gibi.
Yardımcı olursanız sevinirim.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
Galiba olayın failini buldum. Suçluyu yazıyorum:
Application.ScreenUpdating=False

Dosyanızda;
ThisWorkbook.Worksheets("tablo").PrintPreview
satırının hemen altında şu satır var:
Application.ScreenUpdating = True

PrintPreview satırının üstüne alın sanıyorum tamam olacaktır.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
kodu kullanın
 
Sayın Mtudes ;
Yazdığınız kod çalıştığında çıkan ekranda ilk sayfayı görürsünüz, ama diğer sayfalar o gördüğünüz sayfanın devamındadır.
Açılan ekrana fare ile tıkladığınızda sayfanın büyüyüp küçüldüğünü göreceksiniz. Sayfayı küçülttükten sonra fare tekerleğini aşağı doğru çevirerek diğer sayfaları da görebilirsiniz.
 
Konu Sahibi
Sayın @Mtudes ;
Yazdığınız kod çalıştığında çıkan ekranda ilk sayfayı görürsünüz, ama diğer sayfalar o gördüğünüz sayfanın devamındadır.
Açılan ekrana fare ile tıkladığınızda sayfanın büyüyüp küçüldüğünü göreceksiniz. Sayfayı küçülttükten sonra fare tekerleğini aşağı doğru çevirerek diğer sayfaları da görebilirsiniz.
Sayın ubak normal dosya seçeneğinden sayfayı önizleme yaparken dediğiniz gibi tüm sayfaları görebiliyorum ama kodlamayla yapmaya çalıştığımda ise sadece ilk sayfayı görebiliyorum.Sonraki sayfalar önizlemede çıkmıyor.
 
Sayın Mtudes ; resim1 inceleyiniz.
Module1 içindeki excelcozum makrosunda devre dışı bıraktığım YEŞİL RENKLİ SATIRLARDA;
'tablo.Range("f4:z300").Delete
'tablo.Range("a6:e300").Delete
bu iki kod sayfanızdaki hücreleri siliyor. Hücrenin içindeki veriyi temizlemiyor. Direkt HÜCRENİN KENDİSİNİ siliyor.
Makro çalışmadan önce sayfa üzerinden önizleme ekranını açtığınızda sayfa dolu olduğu için diğer sayfaları da görüyorsunuz.
Ancak anladığım kadarıyla makro çalıştığında sayfa temizleniyor ve yaptığınız sorgu sonucunda gelen veri 1 sayfaya sığdığı için önizleme ekranında da göremiyorsunuz. Yani aslında göremiyor değilsiniz. Veri o kadar olduğu için o kadar görüyorsunuz. (2. resim)
1.jpg
 
Son düzenleme:
Konu Sahibi
Sayın ubak devredışı bıraktığınız kodları bende devredışı bırakıp denedim ama yinede diğer sayfaları göremedim.O kodları kullanmamın sebebi kenarlıkları kontrol etmek için.İki sayfalık veriyi çıktı aldıktan sonra 1 sayfalık veriyi çıktı almak istediğimde tabloda kenarlıklar düzensiz ve fazladan görünüyor.
 
Kodlarınızı çalıştırıp yazdırma önizleme ekranı açıldığında ekran görüntüsü alıp paylaşır mısınız?
O kodları örnek verdim. Ama olay sadece sayfanın temizlenmesi değil. Açıklamamda şunu yazdım:
Ancak anladığım kadarıyla makro çalıştığında sayfa temizleniyor ve yaptığınız sorgu sonucunda gelen veri 1 sayfaya sığdığı için önizleme ekranında da göremiyorsunuz. Yani aslında göremiyor değilsiniz. Veri o kadar olduğu için o kadar görüyorsunuz. (2. resim)
Ancak anladığım kadarıyla makro çalıştığında sayfa temizleniyor ve yaptığınız sorgu sonucunda gelen veri 1 sayfaya sığdığı için önizleme ekranında da göremiyorsunuz
Yani makronuz önce sayfayı temizliyor, sonra Comboboxlarda yaptığınız seçimlere göre yeniden dolduruyor. İşte bu noktada yaptığınız seçimlere uygun veri bulunamıyorsa sayfaya yeni veri yazılmadığı için sadece başlıklar kalıyor. Önizleme yaptığınızda da tek sayfa görürsünüz. Yazdırılacak veri ikinci, üçüncü... sayfalara taşarsa o zaman yazdırma önizleme ekranında ikinci, üçüncü... sayfaları da görebilirsiniz.
 
Konu Sahibi
Sayın ubak aşağıda önizleme olarak sadece bir sayfa gösteriyor.Uzaklaştırıp yakınlaştırmada yapamıyorum.Pdf olarak masaüstüne kayıt ettiğimde 2 sayfa olarak gözüküyor.
önizleme.png
 
Öncelikle sizin sayfanız yatay ayarlandığı için büyütme-küçültme çıkmaması normal.
Ben denemelerimi hep dikey sayfalarda yaptığımdan bende çıkıyordu.

Asıl meseleye gelince;
Şimdi ben dosyanızda CBoxlar ile seçim yapmadan bütün listeyi döktüm ve maalesef sizdeki gibi geldi. :( :(
Başka bir makro yazdım. Userform açmadan aynı kodu çalıştırdım orda sıkıntısız görünüyor. Sayfalar değişiyor.
Anladığım kadarıyla Userform açılınca sayfa.printprewiev devam eden sayfaları göstermiyor.
Ve maalesef bunun bir çözümü var mı bilmiyorum.
 
Galiba olayın failini buldum. Suçluyu yazıyorum:
Application.ScreenUpdating=False

Dosyanızda;
ThisWorkbook.Worksheets("tablo").PrintPreview
satırının hemen altında şu satır var:
Application.ScreenUpdating = True

PrintPreview satırının üstüne alın sanıyorum tamam olacaktır.
 
Çözüm
Konu Sahibi
Sayın ubak şimdi oldu ama bundan dolayı olduğunu asla tahmin edemezdim .bununla ne alakası olabilir ki
Biz bu kodu kodlar çalışırken istenmeyen görüntü bozukluklarının önüne geçmek için kullanmıyormuyuz.
 
Ben de tahmin edemezdim. Bu sayede bir şey daha öğrenmiş olduk.
 
Konu Sahibi
Sayın ubak çok teşekkür ederim.Asla tahmin edemezdim sayenizde çözüme kavuştu .Elinize emeğinize sağlık.Ama bunun sebebini öğrendiğinizde paylaşırsanız öğrenmek isterim.
 
Application.ScreenUpdating=False kullanmaktaki amaç görüntü bozukluklarını engellemek değildir.
Aslında GÖRÜNTÜ BOZUKLUĞU diye bir şey de yoktur. ScreenUpdating ekranın tazelenmesi demektir. Yani makro çalışırken yapılan işlemin aynı anda ekranda da gösterilmesi demektir. False ile kapattığımızda işlemcimiz ekranı tazelemekle uğraşmayacağı için biz ekranda hiç bir şey görmeyiz ama arka planda kodlar çalışır ve işi yapmaya devam eder. Sonuç olarak kodumuz daha hızlı çalışır. Excelde select, activate gibi komutlar tabiri caizse en MASRAFLI komutlardır. Özellikle Range("a1").select, sayfa1.select, Workbooks("dosya1.xlsm").Activate gibi hücreden hücreye, sayfadan sayfaya, dosyadan dosyaya atlama işlemlerinde kullanılırsa ekran tazeleme devre dışı olacağından muazzam fark oluşacaktır.

false ile sayfa.printprewiev ilişkisine gelirsek...
Bu konuda ilgili/etkili/yetkili bir kaynaktan okuyup öğrendiğim bir bilgim yok ancak şöyle bir akıl yürütmesi yaparsak sanıyorum çok yanılmış olmayız:
false il adı üstünde ekran tazelemesini kapatıyoruz. sayfa.printprewiev kodu çalıştığında ilk sayfa önizleme olarak gösteriliyor ama bizim elle yaptığımız sayfa değiştirme işlemi "EKRAN TAZELEME" kapsamında kaldığından ve biz de bu özelliği false yaptığımızdan ekranımızdaki görüntü ilk sayfada kalmaya devam ediyor...
 
Son düzenleme:
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst