• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

otomatik sayfa numarası

Katılım
16 Haziran 2005
Mesajlar
164
exceldeki listemi yazdırıken 1den fazla sayfalarda sağ alta 1/6 4/9 gibi toplam sayfa sayısı ve yazdırılan sayfaların numarasının otomatik çıkmasını istiyorum bilgisi olan arkadaşlara şimdiden teşekkürler
 
Baskı özinlemeden ayarlar-üstbilgi/altbilgi-özet alt bilgi-sağkısıma aşağıdaki gibi yazarsanız istediğinizi elde edersiniz.

&[Sayfa]/&[ToplamSayfa]
 
Veya, yine aynı menüden ....
 
her zaman hazır olarak

bu işlemin manuel olarak değilde sadece o dosya için otomatik olmasını istiyorum macro olarak mesela
 
Kod:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  Dim sht As Worksheet
  For Each sht In Worksheets
    sht.PageSetup.CenterHeader = "Sayfa &P"
  Next sht
End Sub
 
Kod:
......PageSetup.RightFooter = "Page &P of &N"
 
Kod:
'ÜST BİLGİ / ALT BİLGİ
Sub BilgiAmacliOlupWithKullanilmadi()

    Sheets(1).PageSetup.RightHeader = "Sağ Üst Bilgi"
    Sheets(1).PageSetup.CenterHeader = "Orta Üst Bilgi"
    Sheets(1).PageSetup.LeftHeader = "Sol Üst Bilgi"
    
    Sheets(1).PageSetup.RightFooter = "Sağ Alt Bilgi"
    Sheets(1).PageSetup.CenterFooter = "Orta Alt Bilgi"
    Sheets(1).PageSetup.LeftFooter = "Sol Alt Bilgi"

End sub
 
Ek:

Kod:
Böyle durumlarda "Makro kaydet" yöntemi gayet başarılıdır.
 
Bence Makro kaydet başarısızdır. Tüm sayfaları nasıl ayarlayacak, döngü lazım, sonra gereksiz satırları silmemiz gerekmezmi.

Makro kaydet sonucu

Option Explicit

Kod:
Sub Makro1()
'
' Makro1 Makro
' Makro muhasebe3 tarafından 24.06.2005 tarihinde kaydedildi.
'

'
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = "Sayfa &P"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "Sayfa &P / &N"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.748031496062992)
        .RightMargin = Application.InchesToPoints(0.748031496062992)
        .TopMargin = Application.InchesToPoints(0.984251968503937)
        .BottomMargin = Application.InchesToPoints(0.984251968503937)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = True
        .PrintComments = xlPrintNoComments
        .PrintQuality = Array(120, 72)
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
    ActiveWindow.SelectedSheets.PrintPreview
End Sub
 
VBA'i biraz bilen ama koddaki "Sayfa &P / &N" esprisini yakalayamayan bir kullanıcı için, bence gayet iyi bir yöntemdir.

Gereksiz kısımlarını silip, ilavelerini kendisi zaten yapar. Ben sık, sık kullanırım...

Bu benim fikrim tabii...
 
Fikrinize şimdi katılıyorum. Kaydet unutulan kodları hatırlatır bize, yoksa Makro Kaydedip çalıştıran kullanıcı, gereksiz onlarca satırla boğuşur. Gerksiz satırları silip işlemleri döngü içnde kullanmak oldukça mantıklı bir yöntemdir. Yukarıdaki kodlarızn gereken kısmı bir döngü ile şu hale geldi:

Kod:
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
  Dim sht As Worksheet 
  For Each sht In Worksheets 
    sht.PageSetup.CenterHeader = "Page &P of &N"
  Next sht 
End Sub

:hey:
 
Döngüler VBA için en faydalı araçlardan biridir.

Gerektiği yerde gerektiği kadar kullanılırsa yazılan koddan o zaman en iyi performans alınır.

Ama, herkesin kendine göre bir kod yazma tarzı vardır..... işin orası ayrı bir konu...

Bana göre aşağıdaki tarzdan ufak bir kod, bu iş için yeterlidir. (ThisWorkboook modulüne yerleştirilmek üzere...)

[vb:1:413f1be0f3]Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.RightFooter = "Page &P of &N"
End Sub
[/vb:1:413f1be0f3]
 
kodlar havada uçuşmuş bu sayfada:) ellerinize saglık:) :D
 
Geri
Üst