veri uzunluğuna göre sayfa baskısı

Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sayın hocalarım, hazırladığım programda userform üzerinde istediğim veriyi listeleyip öndecen yazdırma alanı belirlediğim için makro aracılığıyla yazıcıya gönderebiliyorum fakat sorun şurda eğer veri bir sayfadan fazla ise yazdırma alanı bir sayfa olduğu için bir sayfayı basıyor diğer sayfayı yazdırmıyor. Varsayılan yazdırma alanı 10 sayfa diye tanımlasam bu sefer de bir veya iki sayfa dolu çıkıyor diğer sayfaların tamamı yazıcıdan boş çıkıyor. Bu sorunu makro ile çözmenin bir yolu varmıdır. Yani belli bir satır sayısı tanımlanıp o satır sayısı aştığında diğer sayfayı yazdırma şansı varmıdır. İlginize teşekkür ederim.
 
Katılım
3 Mart 2005
Mesajlar
120
Tanımladığınız sayfada satır sayısını belirleyin..Ã?rneğin, 52 satır = bir sayfa olsun..En son print almadan önce satır sayısını saydırın..52 ve katlarına göre sayfa adedi belirleyin(sayfa adedi=satır sayısı/52 gibi..)..Ona göre yazıcıya sayfa adedi belirleyip çıktı alın..
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
hocam bunu userformda makro olarak nasıl yaparım.
 
Katılım
12 Şubat 2005
Mesajlar
96
Benimde benzer bir sorunum vardı..Yazdırmayacağım sayfalardaki satır yüksekliğini 0 yaparak çözüm buldum.. Böyle bir çözüm düşünürsen dosyanı ekle benzerini uygulayalım...
 
Katılım
6 Şubat 2005
Mesajlar
1,467
listenizi satır atlamadan mı yapıyorsunuz veya listenizin sonunu belirleyici bir bilgi varmı
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
listeyi satır atlamadan yapıyorum doğrudur listenin sonunu belirleyici bir bilgi de vermiyorum. Userform üzerindeki yazdır butonundan yazıcıya aktarıyorum ve kodu da ; örnek bir sayfa için şöyle;
Private Sub CommandButton4_Click()
Sheets("KASRAP").PrintOut
End Sub
 
Katılım
6 Şubat 2005
Mesajlar
1,467
dosyanı eklerlersen daha iyi olurdu.
Private Sub CommandButton4_Click()
satirsay = Range("A1").CurrentRegion.Rows.Count
ActiveSheet.PageSetup.PrintArea = "$A$1:$E$" & satirsay
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
hocam maalesef dosya ekleme şansım yok çünkü 12 mb lık bir dosya bu. ActiveSheet.PageSetup.PrintArea = "$A$1:$E$" & satirsay komutundaki $E$ son hücreyi temsil ediyor değilmi.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
hocam üç sayfa veri vardı ama 116 sayfa yazdırdı. acaba nedeni ne olabilir
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
hocam hatayı buldum ve düzeldi. çok güzel çalışıyor. emeğinize teşekkür ederim.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.hocalarım, yukarıda sorduğum soruya sn.ömerceri den cevap aldım ve sağolsun makro sorunsuz çalışıyor fakat buraya bir ekleme yapmam gerekiyor şöyleki; eğer mümkün ise yazdırılacak sayfa bir tane ise sayfanın sonuna belirtilen sütunların toplamının alınması, eğer sayfa birden fazla ise sayfa sonlarına ara toplam en son sayfaya genel toplam alması, bu mümkün değil ise en sondaki sayfaya toplam alması. Yardımlarınızı esirgemediğiniz için teşekkürler. Þimdiden tüm excel.web.tr üyelerinin bayramlarını kutuluyorum.
 
Katılım
6 Şubat 2005
Mesajlar
1,467
sayfa başlıklarının olmadığını
sayfanın A sütunundan L sütununa kadar olduğunu
toplanacak sütunun A sütunu olduğunu
farzettim
bütün satırlarının yüksekliğinin aynı olması gerekiyor
aşağıdaki kodları diğer kodların üstüne eklersen

Sub Makro1()
say = Range("a1").CurrentRegion.Rows.Count
If say < 56 Then
Range("a" & say + 1).Value = "=Sum(a" & say & ":a1)"
Else
say1 = (say \ 56) + say
For i = 56 To say1 Step 56
Range("a" & i & ":L" & i).EntireRow.Insert
Range("a" & i).Value = "=Sum(a" & i - 1 & ":a" & i - 55 & ")"
Next
End If
Range("a" & say1 + 1).Value = "=Sum(a" & say1 & ":a" & say1 - ((say1 Mod 56) - 1) & ")"
Range("a" & say1 + 2).Value = "=Sum(a1:a" & say1 + 1 & ")"
Range("a" & say1 + 2).Value = Range("a" & say1 + 2) / 2
End Sub
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.ömerceri çok teşekkür ederim kodlar güzel çalıştı elinize sağlık ve iyi bayramlar.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.ömerceri, verdiğiniz kodları programa uygulamadan önce çalıştırdım güzel çalışıyor ama kendi programıma adapte edemedim. bendeki rapor sayfası başlıklı bir sayfa a1 hücresinden k1 hücresine kadar başlıklar var. Başlıklar aşağıdaki gibi; S.No Tarih Firma Adı Malın Cinsi Miktar Birim Marka Açıklama Kod. B.Fiyatı Tutarı
benim toplattırmak istediğim hücreler ise Miktar yani (E2 hücresinden aşağıya dopru) ve Tutarı yani (K2 hücresinden aşağıya doğru) Yazdığınız makroyu be şekle göre uyarlamanız mümkünmü. İlginiz için teşekkür ederim.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.ömerceri,
daha önceki verdiğiniz kodlara göre sayfa uzunluğunu hesaplayıp baskı yapabiliyorum ek'te ki örnek rapor sayfasında. eğer bu örnekrapor size alt toplamları alma konusunda yardımcı olamazsa lütfen bildirirmisiniz. Yardımlarınız için teşekkür ederim. Saygılarımla.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.hocalarım bu konuya bir el atın lütfen epeydir uğraşıyorum ama yine de başaramadım ve delirmek üzereyim artık ne kadar değişiklik yaptıysam da e1 hücresine toplam alıyor.
:agla: :kafa:
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ekte bir örnek hazırladım inceleyin. I sütunundaki toplamı her sayfanın sonuna yazmaktadır. Dosyadaki kodu çalıştırmadan önce sayfa özinleme yaparak görünüşü inceleyin. Kodu çalıştırdıktan sonra tekrar incelerseniz farkı göreceksiniz. Kod hers sayfanın sonunu kendiliğinden algılamaktadır. Sayfa ayarlarını değiştirseniz bile yeni ayarlar dikkate alınacaktır.

Kod:
Sub alttoplam()
Application.ScreenUpdating = False
ActiveWindow.View = 2
say = ActiveSheet.HPageBreaks.Count
ilk = 2
c = -1
sontoplam = WorksheetFunction.Sum([i2:i65536])
For a = 1 To say
sat = ActiveSheet.HPageBreaks.Item(a).Location.Row - 1
Rows(sat).Insert
adr = "i" & ilk & ":i" & sat + c
c = 0
ilk = sat
toplam = WorksheetFunction.Sum(Range(adr))
Cells(sat, "h") = "TOPLAM:"
Cells(sat, "i") = toplam
Next
sonsat = [h65536].End(3).Row + 1
Cells(sonsat, "h") = "TOPLAM:"
Cells(sonsat, "i") = sontoplam
ActiveWindow.View = 1
End Sub
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
Bilgi ve bilgiyi paylaşmak ne kadar güzel. teşekkürlerler leventm hocam. Size ve diğer emeği geçen arkadaşlara çok teşekkür ederim. istediğimden çok daha güzel olmuş.
 
Üst