DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub Tabloyazdir()
Dim satir As Long
Dim sutun As Long
Dim yazdirRange As Range
satir = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sutun = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Set yazdirRange = Range(Cells(1, 1), Cells(satir, sutun))
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = False
yazdirRange.PrintOut
End Sub
Hocam bu hepsini tek seferde yazdırıyor.Basit bir örnek vermek gerekirse filtrelenmiş bir tablom var ad soyad ve numara 1 den 100 kadar numara veriyorum ve listede 1000 kişi var filtredim numaraya göre tek tek ayrı sayfalarda çıktı alıyorum.Bunu otomatik olarak nasıl yaparım.Mödüle ekleyip tablonuzu yazdırabilirsinizC++:Sub Tabloyazdir() Dim satir As Long Dim sutun As Long Dim yazdirRange As Range satir = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row sutun = Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column Set yazdirRange = Range(Cells(1, 1), Cells(satir, sutun)) ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ActiveSheet.PageSetup.FitToPagesWide = 1 ActiveSheet.PageSetup.FitToPagesTall = False yazdirRange.PrintOut End Sub
Merhaba,Hocam bu hepsini tek seferde yazdırıyor.Basit bir örnek vermek gerekirse filtrelenmiş bir tablom var ad soyad ve numara 1 den 100 kadar numara veriyorum ve listede 1000 kişi var filtredim numaraya göre tek tek ayrı sayfalarda çıktı alıyorum.Bunu otomatik olarak nasıl yaparım.
Yanlış ifade etmişim başlıklar tablolara göre değisebiliyor birden fazla genelde 4 veya 5 başlık ve filtreye göre satır sayısı birden fazla olabiliyorMerhaba,
Tabloda her satırı dediniz. Bu satır sayısı sabit mi. Yani her bir sayfada bir satır ve başlık mı yazdırıyorsunuz? Bazı sayfalardaki satırlar birden fazla olabilir mi?
Sub Filtrele_Satir_Satir_Yaz()
Dim sonsat As Long
Dim sat As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set ws = ThisWorkbook.Worksheets("Sayfa1")
sonsat = Cells(Rows.Count, "A").End(3).Row
With ActiveSheet
.ResetAllPageBreaks
For i = 2 To sonsat
Set rng = Range("A" & i)
If rng.Value <> rng.Offset(1, 0).Value Then
ActiveSheet.HPageBreaks.Add Before:=rng.Offset(1, 0)
End If
Next
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
ActiveSheet.PrintOut , preview:=True
ActiveSheet.ResetAllPageBreaks
End Sub
Hocam çok teşekkür ederim elinize sağlıkA sütünundaki değişmeye göre yazdırmak. Başlık 1.satır olarak alındı.
Kod:Sub Filtrele_Satir_Satir_Yaz() Dim sonsat As Long Dim sat As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Set ws = ThisWorkbook.Worksheets("Sayfa1") sonsat = Cells(Rows.Count, "A").End(3).Row With ActiveSheet .ResetAllPageBreaks For i = 2 To sonsat Set rng = Range("A" & i) If rng.Value <> rng.Offset(1, 0).Value Then ActiveSheet.HPageBreaks.Add Before:=rng.Offset(1, 0) End If Next End With Application.DisplayAlerts = True Application.ScreenUpdating = True ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ActiveSheet.PrintOut , preview:=True ActiveSheet.ResetAllPageBreaks End Sub
Çok teşekkür ederim Necati bey emeğinize saglık.ActiveSheet.PrintOut , preview:=True
satırını böyle değiştirin.
ActiveSheet.PrintOut
Necati bey merhaba,ilk filtrede bazı sütünlardaki rakamları alt toplam alıyorum tek tek döküm alırken her filtrede bu toplam görünüyordu ancak sizin kodda bu toplam gözükmüyor.Ekleme şansımız var mı rahatsız ettim kusura bakmayıA sütünundaki değişmeye göre yazdırmak. Başlık 1.satır olarak alındı.
Kod:Sub Filtrele_Satir_Satir_Yaz() Dim sonsat As Long Dim sat As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Set ws = ThisWorkbook.Worksheets("Sayfa1") sonsat = Cells(Rows.Count, "A").End(3).Row With ActiveSheet .ResetAllPageBreaks For i = 2 To sonsat Set rng = Range("A" & i) If rng.Value <> rng.Offset(1, 0).Value Then ActiveSheet.HPageBreaks.Add Before:=rng.Offset(1, 0) End If Next End With Application.DisplayAlerts = True Application.ScreenUpdating = True ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ActiveSheet.PrintOut , preview:=True ActiveSheet.ResetAllPageBreaks End Sub
E ve F sütununda alt toplam yapıyorumAlt toplamı hangi sütunda veya sütünlarda aldırıyordunuz?
Sub Alttoplamile_Satir_Satir_Yaz()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Range("A1").Select
Selection.RemoveSubtotal
Range("A1").Select
Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5, 6), _
Replace:=False, PageBreaks:=True, SummaryBelowData:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
ActiveSheet.PrintOut , preview:=True
ActiveSheet.ResetAllPageBreaks
Selection.RemoveSubtotal
End Sub
Bu kod çalışmadı Necati bey aslında yanlış ifade ettm E ve F sütununda alt toplam ifadesi yanliş oldu, normal toplam yapıyorum bir alt satırda toplam görünüyor filtre değiştikçe veriye göre değişiyor ancak ilk kodda yazdırırken görünmüyor.Kod:Sub Alttoplamile_Satir_Satir_Yaz() Application.ScreenUpdating = False Application.DisplayAlerts = False Range("A1").Select Selection.RemoveSubtotal Range("A1").Select Selection.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(5, 6), _ Replace:=False, PageBreaks:=True, SummaryBelowData:=True Application.DisplayAlerts = True Application.ScreenUpdating = True ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ActiveSheet.PrintOut , preview:=True ActiveSheet.ResetAllPageBreaks Selection.RemoveSubtotal End Sub
Harici paylaşım sitesine örnek dosya yükleyebilir misiniz?
Sub Alttoplamile_Satir_Satir_Yaz2()
Dim sonsat As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook.Worksheets("Sayfa1")
If .FilterMode Then .ShowAllData
End With
Range("A1").Select
Selection.RemoveSubtotal
Range("A1").Select
Selection.Subtotal GroupBy:=7, Function:=xlSum, TotalList:=Array(5, 6), _
Replace:=False, PageBreaks:=True, SummaryBelowData:=True
Columns("E:F").SpecialCells(xlFormulas).Font.Bold = True
sonsat = Cells(Rows.Count, "G").End(3).Row
Range("G1:G" & sonsat).Select
Selection.Replace What:="*Toplam*", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
ActiveSheet.PageSetup.PrintTitleRows = "$1:$1"
ActiveSheet.PrintOut , preview:=True
ActiveSheet.ResetAllPageBreaks
Selection.RemoveSubtotal
End Sub
Necati bey çok tesekkür ederim şuan ofis dışındayım deneyip dönüş yapacağımKod:Sub Alttoplamile_Satir_Satir_Yaz2() Dim sonsat As Long Application.ScreenUpdating = False Application.DisplayAlerts = False With ThisWorkbook.Worksheets("Sayfa1") If .FilterMode Then .ShowAllData End With Range("A1").Select Selection.RemoveSubtotal Range("A1").Select Selection.Subtotal GroupBy:=7, Function:=xlSum, TotalList:=Array(5, 6), _ Replace:=False, PageBreaks:=True, SummaryBelowData:=True Columns("E:F").SpecialCells(xlFormulas).Font.Bold = True sonsat = Cells(Rows.Count, "G").End(3).Row Range("G1:G" & sonsat).Select Selection.Replace What:="*Toplam*", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Application.DisplayAlerts = True Application.ScreenUpdating = True ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" ActiveSheet.PrintOut , preview:=True ActiveSheet.ResetAllPageBreaks Selection.RemoveSubtotal End Sub