Code Insert Page break có điều kiện (1 người xem)

Liên hệ QC

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

Tham gia
17/9/12
Bài viết
1,351
Được thích
1,575
Giới tính
Nữ
Em có 1 file bảng kê như đính kèm ạ, nhưng khi in ra thì một phần nội dung cuối sẽ bị nhảy sang trang khác nên e muốn đặt điều kiện là nếu chữ "Cộng" ở cột C và "Lê Thị Hương" ở Cột H mà thuộc 2 trang khác nhau thì sẽ tự động Insert page break vào trước mã hàng cuối cùng của bảng kê (Ví dụ trong file là chèn vào dòng 17) để dòng dữ liệu cuối cùng đó cùng nội dung phía sau chuyển hết sang trang sau ạ. E có làm trong file đính kèm ở bên sheet kết quả rồi ạ. Bảng kê có thể có nhiều hoặc ít dòng hơn và độ rộng ở cột C là có thể thay đổi tuỳ theo độ dài của tên hàng ạ. Bình thường vì số lượng bảng kê ít nên e làm thủ công phần này nhưng em cũng muốn tìm hiểu thêm xem có cách nào xử lý được không. Mong các ACE giúp đỡ ạ. E cảm ơn!
 

File đính kèm

Bạn thử đoạn code này thử xem.
Mã:
Public Sub GPE()
    Dim p As Long, sCell As Range
    p = ActiveSheet.HPageBreaks.Count
    If p > 0 Then
        Set sCell = Sheet216.Range("C:C").Find("C" & ChrW(7897) & "ng")
        If Not sCell Is Nothing Then
            If sCell.Row + 3 < Sheet216.HPageBreaks(p).Location.Row Then
                sCell.Offset(-2).Select
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
            End If
        End If
    End If
End Sub
 
Upvote 0
Bạn thử đoạn code này thử xem.
Mã:
Public Sub GPE()
    Dim p As Long, sCell As Range
    p = ActiveSheet.HPageBreaks.Count
    If p > 0 Then
        Set sCell = Sheet216.Range("C:C").Find("C" & ChrW(7897) & "ng")
        If Not sCell Is Nothing Then
            If sCell.Row + 3 < Sheet216.HPageBreaks(p).Location.Row Then
                sCell.Offset(-2).Select
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
            End If
        End If
    End If
End Sub
E cảm ơn anh ạ. Anh xem lại giúp em ạ, Sheets 1304 thì đúng nhưng nếu áp dụng với sheet 1318 lại chưa đúng anh ạ. Anh xem lại giúp em đc k ạ. e đang thử mò code nhưng vẫn chưa ra hẳn :)
 

File đính kèm

Upvote 0
Bạn này mắc cười nhỉ, muốn áp dụng cho sheet khác thì sửa theo tên sheet chứ, bạn áp dụng y hệt vậy làm sao mà chạy được. Sửa lại code như bên dưới, và so sánh với code ở #1 xem khác chổ nào (hình như là 216 và 218 thì phải) sau đó tự bạn sẽ nghiệm ra thôi.
Mã:
Public Sub GPE()
    Dim p As Long, sCell As Range
    p = ActiveSheet.HPageBreaks.Count
    If p > 0 Then
        Set sCell = Sheet218.Range("C:C").Find("C" & ChrW(7897) & "ng")
        If Not sCell Is Nothing Then
            If sCell.Row + 3 < Sheet218.HPageBreaks(p).Location.Row Then
                sCell.Offset(-2).Select
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
            End If
        End If
    End If
End Sub
 
Upvote 0
Bạn này mắc cười nhỉ, muốn áp dụng cho sheet khác thì sửa theo tên sheet chứ, bạn áp dụng y hệt vậy làm sao mà chạy được. Sửa lại code như bên dưới, và so sánh với code ở #1 xem khác chổ nào (hình như là 216 và 218 thì phải) sau đó tự bạn sẽ nghiệm ra thôi.
Mã:
Public Sub GPE()
    Dim p As Long, sCell As Range
    p = ActiveSheet.HPageBreaks.Count
    If p > 0 Then
        Set sCell = Sheet218.Range("C:C").Find("C" & ChrW(7897) & "ng")
        If Not sCell Is Nothing Then
            If sCell.Row + 3 < Sheet218.HPageBreaks(p).Location.Row Then
                sCell.Offset(-2).Select
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
            End If
        End If
    End If
End Sub
E k để ý phần tên sheet, anh thông cảm.
E viết thử ra cái này rồi ạ. anh đọc rồi cho ý kiến giúp em với ạ. E cảm ơn
Sub PB()
PG = ActiveSheet.HPageBreaks.Count + 1
co = WorksheetFunction.Match("C" & ChrW(7897) & "ng", Range("C1:C1000"), 0) - 2
lth = WorksheetFunction.Match("L" & ChrW(234) & " Th" & ChrW(7883) & " H" & ChrW(432) & ChrW(417) & "ng", Range("H1:H1000"), 0)
vt = ActiveSheet.HPageBreaks(PG - 1).Location.Row
If co <= vt And vt <= lth Then
Range("A" & co).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
End If
End Sub
 
Upvote 0
Bạn này mắc cười nhỉ, muốn áp dụng cho sheet khác thì sửa theo tên sheet chứ, bạn áp dụng y hệt vậy làm sao mà chạy được. Sửa lại code như bên dưới, và so sánh với code ở #1 xem khác chổ nào (hình như là 216 và 218 thì phải) sau đó tự bạn sẽ nghiệm ra thôi.
Mã:
Public Sub GPE()
    Dim p As Long, sCell As Range
    p = ActiveSheet.HPageBreaks.Count
    If p > 0 Then
        Set sCell = Sheet218.Range("C:C").Find("C" & ChrW(7897) & "ng")
        If Not sCell Is Nothing Then
            If sCell.Row + 3 < Sheet218.HPageBreaks(p).Location.Row Then
                sCell.Offset(-2).Select
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
            End If
        End If
    End If
End Sub
Cảm ơn anh em làm đc rồi ạ.
 
Upvote 0
Cũng được xác định điều kiện Tên và Cộng và so sánh vậy cũng được, nhưng tôi không hiểu tại sao PG = ActiveSheet.HPageBreaks.Count + 1 chổ màu đỏ làm chi và lại trừ ra ActiveSheet.HPageBreaks(PG - 1).Location.Row mất công vậy.
 
Upvote 0
e cần dùng cả chỉ tiêu số trang nữa nên dùng vậy luôn ạ :). E cũng bập bẹ học VBA nên cũng còn gà lắm ạ. Mong anh chỉ giáo thêm :). Chúc anh buổi tối vui ạ
 
Upvote 0
Web KT

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

Back
Top Bottom