Điều chỉnh kích thước dòng tự động theo trang in (1 người xem)

  • Thread starter Thread starter Sheva87
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

Sheva87

Thành viên mới
Tham gia
17/6/15
Bài viết
28
Được thích
1
Thân chào các Anh/Chị diễn đàn GPE

Nhờ các Anh/Chị hỗ trợ xử lý điều chỉnh kích thước dòng (tự động) vừa với trang in. Trong file đã set print area, Width 1 page, Height Automatic. Tuy nhiên vẫn chưa tối ưu cho các dòng khi in (ví dụ dữ liệu in 2 page, page 2 chỉ hiển thị 1 vài dòng => nhỏ, khó đọc). Chỉnh độ rộng cột thủ công tốn thời gian khi Workbook có nhiều sheet.

Xin đính kèm file. Nhờ các Anh/Chị hỗ trợ.

Cám ơn các Anh/Chị.
 

File đính kèm

Hàm FITROW và hàm bổ trợ FIT_Indexes bên bài này sẽ giúp bạn đạt được như mong muốn
Tuy đã có phiên bản mới hỗ trợ in ấn, nhưng tôi chưa cập nhật lên bài viết

https://giaiphapexcel.com/diendan/threads/155161/
 
Upvote 0
Thân chào các Anh/Chị diễn đàn GPE
Cho mình hỏi bạn nào có file exel quản lý thiết bị dạy học trong trường học, cho mình xin với ạ. Thanks
 
Upvote 0
Hàm FITROW và hàm bổ trợ FIT_Indexes bên bài này sẽ giúp bạn đạt được như mong muốn
Tuy đã có phiên bản mới hỗ trợ in ấn, nhưng tôi chưa cập nhật lên bài viết

https://giaiphapexcel.com/diendan/threads/155161/
Cám ơn Anh HeSanbi nhiều.

Xin lỗi Anh vì không biết nhiều về code nên em vẫn chưa biết cách ứng dụng hướng dẫn của anh để xử lý vấn đề của em. em đã chạy Ctrl Shift Alt R bên file của em nhưng các dòng có xu hướng co lại chứ không điều chỉnh vừa với trang in.

Trong file của em có nhiều sheet, trong 1 sheet số dòng dữ liệu là khác nhau nhưng vùng đầu (Dòng 1:2) và vùng cuối (+11 dòng từ vị trí chứa dữ liệu cuối cùng của cột N) luôn cố định không đổi. Đồng thời nếu có nhiều hơn 1 trang in thì Rows to repeat at top là dòng 3:4.

Em muốn code sẽ tự động điều chỉnh kích thước dòng (vùng dữ liệu chính từ A3 : P& LastRowN) để trang in luôn tối ưu.

Trân trọng
 
Upvote 0
Do cấu trúc dữ liệu của bạn khó căn chỉnh sau cho phù hợp trang, không liên quan đến giãn dòng
 
Upvote 0
Thân chào các Anh/Chị diễn đàn GPE

Nhờ các Anh/Chị hỗ trợ xử lý điều chỉnh kích thước dòng (tự động) vừa với trang in. Trong file đã set print area, Width 1 page, Height Automatic. Tuy nhiên vẫn chưa tối ưu cho các dòng khi in (ví dụ dữ liệu in 2 page, page 2 chỉ hiển thị 1 vài dòng => nhỏ, khó đọc). Chỉnh độ rộng cột thủ công tốn thời gian khi Workbook có nhiều sheet.

Xin đính kèm file. Nhờ các Anh/Chị hỗ trợ.

Cám ơn các Anh/Chị.
Bạn tham khảo code sau -làm theo ý hiểu của bản thân
Mã:
Option Explicit

Sub Thu(ByVal eRng As Range)
Dim RowPage&, nPage&, Lr&, rTieuDe&, rKyDuyet&, i&, k&, t&, f&, m&, SoTrang&
Dim PrintArea As String, Rng As Range, Vung, D

On Error GoTo Thoat

Lr = Range("A1000000").End(xlUp).Row - 2
rTieuDe = 2: rKyDuyet = Lr + 11
 With ActiveSheet.PageSetup
        .PrintTitleRows = "$3:$4"
        .PrintTitleColumns = ""
    End With
PrintArea = ActiveSheet.PageSetup.PrintArea
Set Rng = Range("A1:P" & rKyDuyet)
Vung = Rng.Address
If PrintArea = Empty Then
    ActiveSheet.PageSetup.PrintArea = Vung
    PrintArea = ActiveSheet.PageSetup.PrintArea
End If
    D = Mid(PrintArea, InStrRev(PrintArea, "$") + 1) * 1
    RowPage = ActiveSheet.HPageBreaks(1).Location.Row - 1
'If Lr >= RowPage Then MsgBox "Không cân điêu chinh dong": Exit Sub
rTieuDe = 2: rKyDuyet = Lr + 11
k = Cells(rTieuDe + 1, 1).RowHeight
f = Cells(rTieuDe + 1, 1).Font.Size
If eRng <> Empty Then
    SoTrang = eRng + 1
    RowPage = SoTrang * RowPage
    Do
        t = t + 1
        With Range("A" & rTieuDe + 1 & ":P" & Lr)
            .RowHeight = k * (100 + t) / 100
            .Font.Size = f + (0.1 * t)
        End With
            RowPage = SoTrang * (ActiveSheet.HPageBreaks(1).Location.Row - 1)
    Loop While RowPage >= D
Else
    Do
        t = t + 1
        With Range("A" & rTieuDe + 1 & ":P" & Lr)
            .RowHeight = k * (100 - t) / 100
            .Font.Size = f - (0.1 * t)
        End With
            RowPage = ActiveSheet.HPageBreaks(1).Location.Row - 1
    Loop While RowPage <= D
End If
Thoat:
MsgBox "Done"
End Sub
Sub Test()
Call Thu(ActiveSheet.Range("Q1"))
End Sub
Nhập số trang cần có được sau khi điều chỉnh dòng (ví dụ Q1=2) và nhất nút "Chạy code" thì ta thu được bảng tính sẽ giãn ra (hoặc co lại để có số trang in =với số ở Q1.
Khi bạn để trống ô Q1(Q1=Empty) thì mặc định là sẽ co lại cho vừa 1 trang in .
Khi điều chỉnh co hoặc giãn các dòng thì cỡ chữ trong bảng tính cũng được tăng lên hoặc giảm tương ứng.
Trong file của em có nhiều sheet, trong 1 sheet số dòng dữ liệu là khác nhau nhưng vùng đầu (Dòng 1:2) và vùng cuối (+11 dòng từ vị trí chứa dữ liệu cuối cùng của cột N) luôn cố định không đổi. Đồng thời nếu có nhiều hơn 1 trang in thì Rows to repeat at top là dòng 3:4.

Em muốn code sẽ tự động điều chỉnh kích thước dòng (vùng dữ liệu chính từ A3 : P& LastRowN) để trang in luôn tối ưu.

Code vẫn còn long thòng và chạy chậm, tuy nhiên với yêu cầu đã được tô đậm ở trên thì hy vọng là giải quyết được phần nào.
Nếu để điều chỉnh tất cả các sheet trong workbook thì bạn thêm vòng lặp duyệt qua tất cả các sheet.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom