Giúp về tự động print theo cột filter

Liên hệ QC

bigbabol89

Thành viên thường trực
Tham gia
15/10/12
Bài viết
225
Được thích
34
Em chào các anh chị,
Em được biết excel có cái VBA, cái gì làm bằng tay thì VBA đều có thể làm được. Các anh chị có thể giúp em viết code tự động in theo dữ liệu cột F được không ạ.
Bình thường em cứ phải filter cột F sau đó ấn in tay từng cái một, rất mất thời gian ( File đính kèm chỉ là ví dụ, chứ bình thường là có nhiều nhóm lắm ạ )
Em cám ơn.
 

File đính kèm

  • Mẫu DS late in, early out.xlsx
    18 KB · Đọc: 12
Em chào các anh chị,
Em được biết excel có cái VBA, cái gì làm bằng tay thì VBA đều có thể làm được. Các anh chị có thể giúp em viết code tự động in theo dữ liệu cột F được không ạ.
Bình thường em cứ phải filter cột F sau đó ấn in tay từng cái một, rất mất thời gian ( File đính kèm chỉ là ví dụ, chứ bình thường là có nhiều nhóm lắm ạ )
Em cám ơn.
Bạn xem cái này thử:
HTML:
Sub Intrangtinh()
    Dim Ws As Worksheet
    Dim Dic As Object, Arr As Variant, v As Variant
    Dim C As Integer: C = 6
    Dim Lr As Long, I As Long, Header As String
Application.ScreenUpdating = False
Set Dic = CreateObject("Scripting.Dictionary")
Set Ws = Sheets("DS")
With Ws
    Lr = .Range("C" & Rows.Count).End(xlUp).Row
    Header = "A2:G2"
    Arr = .Range(.Cells(3, C), .Cells(Lr, C))
    For I = LBound(Arr) To UBound(Arr)
        Dic(Arr(I, 1)) = 1
    Next I
    For Each v In Dic.Keys()
        .Range(Header).AutoFilter field:=C, Criteria1:=v
        ' Ws.PrintOut
        Ws.PrintPreview
    Next v
    .AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • Mẫu DS late in, early out.xls
    67.5 KB · Đọc: 37
Upvote 0
Bạn xem cái này thử:
HTML:
Sub Intrangtinh()
    Dim Ws As Worksheet
    Dim Dic As Object, Arr As Variant, v As Variant
    Dim C As Integer: C = 6
    Dim Lr As Long, I As Long, Header As String
Application.ScreenUpdating = False
Set Dic = CreateObject("Scripting.Dictionary")
Set Ws = Sheets("DS")
With Ws
    Lr = .Range("C" & Rows.Count).End(xlUp).Row
    Header = "A2:G2"
    Arr = .Range(.Cells(3, C), .Cells(Lr, C))
    For I = LBound(Arr) To UBound(Arr)
        Dic(Arr(I, 1)) = 1
    Next I
    For Each v In Dic.Keys()
        .Range(Header).AutoFilter field:=C, Criteria1:=v
        ' Ws.PrintOut
        Ws.PrintPreview
    Next v
    .AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
Em cám ơn,
Anh có thể chỉnh giúp em :
- Cái sheet mà em làm là active sheet được không ạ ? ( Vì file em gửi là file mẫu mà em phải in nhiều sheet tên khác nhau )
- Khi ấn vào thì những nhóm nào dữ liệu dài trên 2 trang thì em không preview được mà chỉ xem được trang đầu tiên.
 
Upvote 0
Bạn xem cái này thử:
HTML:
Sub Intrangtinh()
    Dim Ws As Worksheet
    Dim Dic As Object, Arr As Variant, v As Variant
    Dim C As Integer: C = 6
    Dim Lr As Long, I As Long, Header As String
Application.ScreenUpdating = False
Set Dic = CreateObject("Scripting.Dictionary")
Set Ws = Sheets("DS")
With Ws
    Lr = .Range("C" & Rows.Count).End(xlUp).Row
    Header = "A2:G2"
    Arr = .Range(.Cells(3, C), .Cells(Lr, C))
    For I = LBound(Arr) To UBound(Arr)
        Dic(Arr(I, 1)) = 1
    Next I
    For Each v In Dic.Keys()
        .Range(Header).AutoFilter field:=C, Criteria1:=v
        ' Ws.PrintOut
        Ws.PrintPreview
    Next v
    .AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
Cái lúc người ta Add key dictionary là lúc người ta filter luôn. Vậy đở tốn 1 vòng lập vô ích
 
Upvote 0
Web KT

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

Back
Top Bottom