yazdır makrosunda sayfa düzeni??

Katılım
1 Şubat 2007
Mesajlar
143
Excel Vers. ve Dili
office 2007 türkçe
merhaba arkadaşlar.
yazdır makrosunda sayfa düzeni ayarlayabilirmiyiz.örnek olarak yazdıracağım sayfadaki veriler değişken olabiliyor.bazen 4 sayfa bazen 10 sayfa bazende tek sayfa oluyor.her sayfa için misal 60 satır ve 4 sütun olmak üzere dolu olan satırları sayfalara bölmesini nasıl yaparız.
aşağıdaki kodu kullanıyorum ama sayfa sonu önizleme yaptığımda sadece bir yada 2 sayfa olarak görüyor ve diğer sayfaları görmediğinde eksik bilgi çıkıyor.bu yüzden her seferinde yazdırma alanı belirlemem gerekiyor.makroda bunu otomatik yapabilirmiyiz?
Kod:
ActiveSheet.PrintOut copies:=1, collate:=True
herkese iyi çalışmalar iyi akşamlar
 
Katılım
15 Eylül 2005
Mesajlar
54
yazdırma alanını bu kodla belirleyebilirsin..
Kod:
son = [A65536].End(3).Row + 1
    Range("A1:B" & son).Select
    ActiveSheet.PageSetup.PrintArea = "$A$1:$B$" & son
        With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With

Sayfanın diğer ayarlarını da aşağıdaki kodlara göre istediğinizi yapabilirsiniz..
Kod:
ActiveSheet.PageSetup.PrintArea = "$A$1:$B$" & son
        With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.75)
        .RightMargin = Application.InchesToPoints(0.75)
        .TopMargin = Application.InchesToPoints(1)
        .BottomMargin = Application.InchesToPoints(1)
        .HeaderMargin = Application.InchesToPoints(0.5)
        .FooterMargin = Application.InchesToPoints(0.5)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        End With
        ActiveWindow.SelectedSheets.PrintPreview
kolay gelsin
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,761
Excel Vers. ve Dili
Excel 2019 Türkçe
Size dinamik alan tanımlamayı öneririm.

Şöyle ki;

Öncelikle Ekle menüsünden Ad-Tanımlayı seçin. Sonra aşağıdaki formülü Başvuru yeri alanına yapıştırın.

Kod:
=KAYDIR($A$1;0;0;BAĞ_DEĞ_DOLU_SAY($A$1:$A$5000);4)
Ve Çalışma kitabındaki adlar kısmına ALAN yazın, ekleye basın.

Son olarak aşağıdaki makroyu modüle ekleyin. Her defasında yazdırma alanı; kayıt alanı kadar değişecektir.

Kod:
Sub YAZDIR()
ActiveSheet.PageSetup.PrintArea = "ALAN"
End Sub
 
Katılım
1 Şubat 2007
Mesajlar
143
Excel Vers. ve Dili
office 2007 türkçe
TeŞekkÜrler

arkadaşlar hepinize teşekkür ederim.sizin gibi dostların sayesinden bizde yeni yeni şeyler öğreniyoruz.
saygılarımla
iyi akşamlar:icelim:
 
Katılım
30 Kasım 2006
Mesajlar
411
Excel Vers. ve Dili
Excel 2007 - Türkçe
Altın Üyelik Bitiş Tarihi
05.07.2020
yazdır makrosunda sayfa düzeni

Örnekteki yazdır makrosunda sayfa sonlarına eklenen 2. ve üçüncü sayfaları nasıl yazdırabiliriz

Asıl Dosya büyük olduğundan ekleyemedim. UserFormun yazdır bölümünü bu sayfaya uyarladım.... UserForm açıkken sayfalar "Application.Visible = False" dir..

Sayfada "ActiveSheet.PageSetup.PrintArea = "$A$1:$k$" & Range("k65536").End(xlUp).Row" ile belirlenen dolu hücrelere ait alanı yazdırmak istiyorum.
 

Ekli dosyalar

Son düzenleme:

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,761
Excel Vers. ve Dili
Excel 2019 Türkçe
Kodu düzenledim.
Kod:
Private Sub CommandButton1_Click()
On Error Resume Next
  ProgressBar1.Visible = True
Dim i As Integer
 Sheets("KAYIT").Select
'Buna göre I sütununun en son dolu olan satırı Range("I65536").End(xlUp).Row
'Yazdırılacak alan ise
ActiveSheet.PageSetup.PrintArea = "$A$1:$k$" & Range("k65536").End(xlUp).Row 'veya
  For i = 1 To 100
    ProgressBar1.Value = (i / 100) * 100
    Label1.Caption = Format(Int((i / 100) * 100), "%0")
    DoEvents
  Next i
   Sheets("KAYIT").Select
'ActiveSheet.PrintPreview 'From:=ilk, To:=son, Copies:=ComboBox1, Collate _
        :=True
        ActiveSheet.PrintOut
    Sheets("KAYIT").Select
  MsgBox "***  Y A Z D I R M A  İ Ş L E M İ   B İ T T İ ****"
ProgressBar1.Visible = True
Unload Me
End Sub
 
Üst