Şartlı Olarak Sayfa Yazdırma

Katılım
29 Haziran 2018
Mesajlar
297
Excel Vers. ve Dili
2016 TÜRKÇE
Arkadaşlar Merhaba.
LİSTE isimli bir sayfam var. Bu sayfam verileri başka sayfalardan formüllerle alıyor. Bu sayfaya gelen veriler "O" sütunundaki eğersay formülünün sonucuna göre geliyor. Bu sayfayı yazıcıya gönderecek bir koda ihtiyacım var. Şimdi;

O54 hücresindeki eğersay formülünün sonucu 1 ise veriler 2. sayfaya taşmış demektir. Bu durumda yani O54=1 ise LİSTE sayfasının 1. ve 2. sayfası yazıcıya gönderilmeli, değilse sadece LİSTE sayfasının 1. sayfası yazıcıya gönderilmeli. Bunu sağlayacak kod nasıl olmalı. Teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodu deneyin:

Kod:
Sub yazdır()
If [O54] = 1 Then
    Sheets("LİSTE").PrintOut From:=1, To:=2, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
Else
    Sheets("LİSTE").PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
End If
End Sub
 
Katılım
29 Haziran 2018
Mesajlar
297
Excel Vers. ve Dili
2016 TÜRKÇE
Sayın YUSUF 44 Üstadım. Kodlar sadece birinci sayfayı yazdırdı. Galiba bi yeri yanlış yaptım. Bu kodları bir modüle kopyaladım. Sayfanın kodlarına mı yazmalıydım acaba. Teşekkürler
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Kodda eğer O54 hücresi 1 ise 1-2. sayfaları yazdır değilse sadece 1. sayfayı yazdır şeklinde komut var. Module de olsa sayfa da olsa aynı şekilde işlem yapar. O54 hücreniz 1 olmayabilir mi? İsterseniz örnek dosya olarak yükleyin inceleyelim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Hiçbir şey yapmadan dosyada benim verdiğim ve sizin modüle eklediğiniz kodu çalıştırdım ve iki sayfayı da yazdırdı. Sorun nedir?
 
Katılım
29 Haziran 2018
Mesajlar
297
Excel Vers. ve Dili
2016 TÜRKÇE
Sayın YUSUF 44 Üstadım Size gönderdiğim dosyayı liste sayfası aktifken Ctrl + P ile yazıcıya gönderince 2 sayfa, kodlarla gönderince 1 sayfa oluyor. Yazma alanı belirlenmemiş. Ona da baktım. Sorun nerede bilmiyorum. Bu dosya başka sayfaları da olan bir başka dosyanın parçası. Ondan mı değil mi bilmiyorum. Gerçek dosyayı ekliyorum. Ama bir şey değişeceğini sanmıyorum.
Size zahmet Şayet olmazsa LİSTE sayfasını şablon olarak alıp Öğrenci bilgilerini KULÜP LİSTESİ sayfasından alan bir kod yardımıyla oluşturularak yazıcıya gönderilebilir mi acaba. Böylece kaç sayfa çıkacağı otomatik olmuş olur zannedersem.

http://s3.dosya.tc/server17/l8gy6g/OGRENCI_Liste_yazdirma_1.rar.html
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
CTRL P ile yazdırırsanız elbette sayfa seçimi yapmaz ya da yazdırma alanı belirlemezseniz tüm sayfalar yazdırılır. Verdiğim kod ise O54 hücresi 1 ise 1 ve 2. sayfayı yazdırır, değilse sadece 1. sayfayı yazdırır.

Aşağıdaki kodları dosyanızın VBA bölümünde ThisWorkbook kısmına yapıştırırsanız, LİSTE sayfasındayken yazdırma işlemi yaptığınızda O 54 hücresi 1 ise iki sayfa, değilse 1 sayfa olarak yazdırır:

Kod:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = "LİSTE" And Sheets("LİSTE").[O54] = 1 Then
    Sheets("LİSTE").PrintOut From:=1, To:=2, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
Else
    Sheets("LİSTE").PrintOut From:=1, To:=1, Copies:=1, Collate _
        :=True, IgnorePrintAreas:=False
End If

End Sub
 
Katılım
29 Haziran 2018
Mesajlar
297
Excel Vers. ve Dili
2016 TÜRKÇE
Sayın YUSUF 44 Üstadım Benim amacım LİSTE sayfasındayken yazdırmak değil zaten. KULÜP LİSTESİ sayfasından yazıcıya göndermek. Hazırladığım LİSTE sayfası 44 kişilik. Diyelim ki kulüp öğrencilerinin sayısı 53 olsun. KULÜP LİSTESİ sayfasından yazıcıya gönderirken ilk 44 kişi 1. sayfada listelenecek. Kalan 9 kişi 2. Sayfada listelenecek. 2. sayfada öğrenci olduğundan 2 sayfa yazdırılmalı. 2 sayfada öğrenci yoksa yani sayı 44 ten azsa Sayfa şablonu sabit olduğundan öğrenci sayısı 15 kişi bile olsa yazıcıdan biri 15 kişilik biri boş iki sayfa yazdırılacak. Ben bu israfı önlemek için ne yapabilirim arayışındayım. Öğrenci sayısı genelde 44'ün altında. LİSTE sayfasını 1 sayfalık yapmak yeterli ama ya zamanla sayı 44'ün üzerine çıkarsa yeniden ilaveler yapmak gerekecek. Ben bunu önlemeye çalışıyorum.
Eğer olabilirse 2. sayfayı O54 0 ise koşullu biçimlendirme ile görünmez yapıp tüm sayfayı yazdır desek nasıl olur.Saygılarımla.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İyi de ilk verdiğim kod zaten bu işi yapıyor. Kulüp listesi sayfasına bir düğme ekleyin ve ilk verdiğim kodu makro olarak bu düğmeye atayın. Tek değişmesi gereken koda sayfa adının ilavesi:

Kod:
Sub yazdır()

If sheets("LİSTE").[O54] = 1 Then

    Sheets("LİSTE").PrintOut From:=1, To:=2, Copies:=1, Collate _

        :=True, IgnorePrintAreas:=False

Else

    Sheets("LİSTE").PrintOut From:=1, To:=1, Copies:=1, Collate _

        :=True, IgnorePrintAreas:=False

End If

End Sub
 
Katılım
29 Haziran 2018
Mesajlar
297
Excel Vers. ve Dili
2016 TÜRKÇE
Sayın YUSUF 44 Üstadım İlk verdiğiniz kodun If [O54] = 1 Then satırını son verdiğiniz koddaki
If Sheets("LİSTE").[O54] = 1 Then Satırıyla değiştirince doğru yazdırmaya başladı. İlginize ve emeklerinize çok teşekkür ediyorum. Yazdırma kodunun son hali;


Sub Liste_yazdır()
If Sheets("LİSTE").[O54] = 1 Then
Sheets("LİSTE").PrintOut From:=1, To:=2, Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
Else
Sheets("LİSTE").PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True, IgnorePrintAreas:=False
End If
End Sub
 
Katılım
2 Nisan 2019
Mesajlar
7
Excel Vers. ve Dili
2010 türkçe
Merhabalar; benzer bir durumda benim sorunum var sayfa1 a1 sütununda değer 1 yazıyorsa sayfa2'nin ilk 2 sayfayı, 2 yazıyorsa ilk 4 sayfayı ,diyerek 6 yazıyorsa ilk 12 sayfayı yazdıra kadar gidiyor. Ama ben pdf yapmak istiyorum ve aktif tek sayfada aşağıdaki makro ile yapabiliyorum. Bu şekilde şartı nası yazabilirim.

Sub veriraporu()

Sheets("Veri Raporu").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\Casper\Desktop\GEOREPT V.2.25 makrolu.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets("Veri Raporu").Visible = False
End Sub
 
Üst