Chọn dòng cuối cùng của trang In bằng VBA (1 người xem)

Liên hệ QC

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

trung.aof

Thành viên chính thức
Tham gia
12/2/12
Bài viết
60
Được thích
34
Mọi người xem file đính kèm và làm hộ mình với nhé!
 

File đính kèm

Bạn này viết Code khó nhìn thế (Bạn nên căn lề code cho dễ nhìn).

Bạn sử dụng code sau nhé:
Mã:
Option Explicit
Private Sub CommandButton1_Click()
       
    On Error GoTo thoat
    Application.ScreenUpdating = False
    [COLOR=#ff0000][B]ActiveWindow.View = xlPageBreakPreview[/B]
[/COLOR]    Dim endr As Integer
    Dim n As Integer
    Dim tk As Integer
    Dim ir As Integer
    Dim nP As Double
    Dim sT As Long
    Dim cT As Double
    Dim sD As Integer
    Dim kr
    Dim iloop
    
    endr = Sheet1.Range("G65000").End(xlUp).Row
    n = Sheet2.Range("E65000").End(xlUp).Row
    
    ''If Me.ListBox1.Selected(iloop) = True Then
        ''Sheet2.Range("E7").Value = UserForm1.ListBox1.List(0, iloop)
        Sheet2.Range("E7").Value = UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex, 0)
    ''End If
    
       
    tk = Sheet2.Range("E7").Value
    'Xoa du lieu cu
    If n > 10 Then Sheet2.Range("A11:J" & n + 40).Clear
    Sheet2.Range("A10:B10").ClearContents
    'Dung vong lap de gan du lieu
    kr = 11
    For ir = 4 To endr
        If Val(Left(Sheet1.Range("G" & ir).Value, 3)) = Val(Left(Sheet2.Range("E7").Value, 3)) Then
            Sheet2.Range("B" & kr) = Sheet1.Range("A" & ir)
            Sheet2.Range("C" & kr) = Sheet1.Range("B" & ir)
            Sheet2.Range("D" & kr) = Sheet1.Range("C" & ir)
            Sheet2.Range("E" & kr) = Sheet1.Range("E" & ir)
            Sheet2.Range("F" & kr) = Sheet1.Range("H" & ir)
            Sheet2.Range("G" & kr) = Sheet1.Range("I" & ir)
            Sheet2.Range("H" & kr) = Sheet1.Range("K" & ir)
            Sheet2.Range("I" & kr) = Sheet1.Range("L" & ir)
            kr = kr + 1
        End If
    Next
    
          
    Sheet2.Range("E11:E" & n).WrapText = True
    n = Sheet2.Range("F65000").End(xlUp).Row
    Sheet2.Range("B" & n + 1 & ":B" & n + 28).Value = 1
    With Sheet2
        'Dem so trang
        nP = .HPageBreaks.Count
        
        'Dong cuoi cung cua trang
        [B]cT = .HPageBreaks.Item(nP).Location.Row - 1
[/B]       
        sD = cT - n
        .Range("B" & n + 1 & ":B" & n + 28).Clear
        If sD >= 12 Then
            .Range("E" & cT - 12 + 1) = .Range("E1")
            .Range("E" & cT - 12 + 2) = .Range("E2")
            .Range("j1:q5").Copy
            'Dan vung da copy
            .Range("B" & cT - 12 + 3 & ":I" & cT - 12 + 8).PasteSpecial (xlPasteAll)
        Else
            .Range("E" & cT - 12 + 30 + 1) = .Range("E1")
            .Range("E" & cT - 12 + 30 + 2) = .Range("E2")
            .Range("J1:Q5").Copy
            'Dan vung da copy
            .Range("B" & cT - 12 + 30 + 3 & ":I" & cT - 12 + 30 + 8).PasteSpecial (xlPasteAll)
        End If
    End With
    'Thoat khoi trang thai Copy
    Application.CutCopyMode = False
    ActiveWindow.View = xlNormalView
thoat:
    Application.ScreenUpdating = True
    'Ket qua ktra
    MsgBox ("Da xong  " & nP & "/" & cT & "/" & sD)
    End
End Sub
 
Upvote 0
Em cảm ơn đã trả lời giúp em. Em cũng mới học viết code mà.
 
Upvote 0
Nhưng mà anh chưa hiểu ý của em rồi. Em muốn là nếu dữ liệu có ở dòng thứ 38 trang thứ 2 thì tìm xem dòng cuối cùng của trang thứ 2 là dòng bao nhiêu cơ
 
Upvote 0
Chưa hiểu ý bạn lắm. Mình mới chỉ sửa lỗi code cho bạn thôi.
Dòng cuối cùng mình nghĩ đó chính là dòng mà bạn đã gán giá trị cho biến n
Mã:
n = Sheet2.Range("F65000").End(xlUp).Row

Những code từ dòng lệnh trên xuống dưới thì phải theo ý của bạn chứ (cộng thêm bao nhiêu dòng...).
 
Upvote 0
trong file đấy tìm dòng cuối cùng của trang. Như trong hình em gửi là dòng 29. dòng cuối cùng có dữ liệu là 16. Em có dùng dòng code:
Sheet2.hpageBreaks(nP).location.row để tìm dòng đấy nhưng bị lỗi. anh xem lại hộ em nhé. Cảm ơn!
 

File đính kèm

  • vidu.JPG
    vidu.JPG
    109.7 KB · Đọc: 53
Upvote 0
Em thử chỉ thấy đúng khi nP=1 còn khi nP>=2 thì bị lỗi ở dòng cT = .HPageBreaks.Item(nP).Location.Row - 1. Anh xem lại hộ em nhé
 
Upvote 0
Bạn xem file sau nhé!
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom