Nhờ hỗ trợ viết code in trong excel

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

levuthao

Thành viên mới
Tham gia
22/3/22
Bài viết
5
Được thích
0
Em có cái GPMB có dùng code của anh chị trên diễn đàn.
Nhờ anh chị giúp em vấn đề là em làm cái tính chi tiết đến từng hộ nhưng khi làm xong ẩn các dòng trống không cần thiết nhưng khi bấm lênh in từng hộ nó lại tự động mở ra hết. Vậy anh chị trong diễn đàn có cách nào khắc phục giúp em (Là khi mình ẩn rồi thì khi in chỉ in những dòng có số liệu giữ nguyên dòng ẩn để trang được ngắn hơn) Xin cám ơn
 

File đính kèm

  • GPMB (OKOK).xlsm
    218.2 KB · Đọc: 9

nhờ hỗ trợ viết code in trong excel​

Chà chà, tiêu đề mà cũng quên viết hoa đầu dòng nhỉ.
 
Upvote 0
mình xem qua, chứ không hiểu quy luật ban đầu của tác giả, do bạn đã biến tấu khá nhiều (xóa name "tongcong", ẩn cột range check o2,o1,p1),
nếu cần gấp bạn có thể tham khảo cách học gạo sau
bạn mở hộp thoại code ALT+F11, tìm sub "intungho" như phía dưới, trong dòng code của tác giả, bạn xóa đoạn từ dòng "Kiem tra dieu kien vao" đến trước dòng "Tien hanh in".


Mã:
Sub intungho()
Dim i As Integer
   Dim x As Range
   Dim y As Range
    On Error GoTo last
        Dim cotho As Range
        Dim cell As Range
        Dim z As Integer
        Dim hoinx As Integer
        Dim hodaux As Integer
        Dim hocuoix As Integer
        Dim honhay As Integer
      
        Set cotho = Range(Range("A5"), Range("tongcong").Offset(-1, 0))
            'Columns("I:I").EntireColumn.Hidden = True ' ?n c?t I
            hoinx = Range("O2").Value       'in h? c?n in
            hodaux = Range("O1").Value    'in t?
            hocuoix = Range("P1").Value    ' ??n h?
'Kiem tra dieu kien vao
If hoinx > 0 Then
        cotho.EntireRow.Hidden = True '???c s? d?ng ?? ?n toàn b? các hàng trong vùng cotho (các hàng t? dòng 9 ??n dòng "tongcong" - 1).
        For Each cell In cotho
                If cell.Value = 1 And cell.Offset(0, 1).Value = hoinx Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
                End If
        Next
 
ElseIf hodaux > 0 And hocuoix > 0 Then
      cotho.EntireRow.Hidden = True
      For honhay = hodaux To hocuoix
            For Each cell In cotho
            If cell.Value = 1 And cell.Offset(0, 1).Value = honhay Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
            End If
            Next
        Next honhay
Else:
        cotho.EntireRow.Hidden = False
End If
 'Tien hanh in
    For Each cell In cotho
                If cell.Value = 1 And cell.EntireRow.Hidden = False Then
                z = 0
                Do
                z = z + 1
                Loop While cell.Offset(z, 0).Value = 0
                Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                Set x = Range(Cells(1, 2), cell.Offset(z - 1, 9))
                ActiveSheet.PageSetup.PrintArea = x.Address
                ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
                y.EntireRow.Hidden = True
                End If
    Next
    'Quay lai
    cotho.EntireRow.Hidden = False

    'Columns("I:I").EntireColumn.Hidden = False
    Range("O2").Value = ""
    Range("O1").Value = ""
    Range("P1").Value = ""
last:     Exit Sub
End Sub
 
Upvote 0
Em có cái GPMB có dùng code của anh chị trên diễn đàn.
Nhờ anh chị giúp em vấn đề là em làm cái tính chi tiết đến từng hộ nhưng khi làm xong ẩn các dòng trống không cần thiết nhưng khi bấm lênh in từng hộ nó lại tự động mở ra hết. Vậy anh chị trong diễn đàn có cách nào khắc phục giúp em (Là khi mình ẩn rồi thì khi in chỉ in những dòng có số liệu giữ nguyên dòng ẩn để trang được ngắn hơn) Xin cám ơn
Bạn thử thêm dòng Call GIAU vào trước dòng last: Exit Sub xem sao.
 
Upvote 0
mình xem qua, chứ không hiểu quy luật ban đầu của tác giả, do bạn đã biến tấu khá nhiều (xóa name "tongcong", ẩn cột range check o2,o1,p1),
nếu cần gấp bạn có thể tham khảo cách học gạo sau
bạn mở hộp thoại code ALT+F11, tìm sub "intungho" như phía dưới, trong dòng code của tác giả, bạn xóa đoạn từ dòng "Kiem tra dieu kien vao" đến trước dòng "Tien hanh in".


Mã:
Sub intungho()
Dim i As Integer
   Dim x As Range
   Dim y As Range
    On Error GoTo last
        Dim cotho As Range
        Dim cell As Range
        Dim z As Integer
        Dim hoinx As Integer
        Dim hodaux As Integer
        Dim hocuoix As Integer
        Dim honhay As Integer
    
        Set cotho = Range(Range("A5"), Range("tongcong").Offset(-1, 0))
            'Columns("I:I").EntireColumn.Hidden = True ' ?n c?t I
            hoinx = Range("O2").Value       'in h? c?n in
            hodaux = Range("O1").Value    'in t?
            hocuoix = Range("P1").Value    ' ??n h?
'Kiem tra dieu kien vao
If hoinx > 0 Then
        cotho.EntireRow.Hidden = True '???c s? d?ng ?? ?n toàn b? các hàng trong vùng cotho (các hàng t? dòng 9 ??n dòng "tongcong" - 1).
        For Each cell In cotho
                If cell.Value = 1 And cell.Offset(0, 1).Value = hoinx Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
                End If
        Next
 
ElseIf hodaux > 0 And hocuoix > 0 Then
      cotho.EntireRow.Hidden = True
      For honhay = hodaux To hocuoix
            For Each cell In cotho
            If cell.Value = 1 And cell.Offset(0, 1).Value = honhay Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
            End If
            Next
        Next honhay
Else:
        cotho.EntireRow.Hidden = False
End If
 'Tien hanh in
    For Each cell In cotho
                If cell.Value = 1 And cell.EntireRow.Hidden = False Then
                z = 0
                Do
                z = z + 1
                Loop While cell.Offset(z, 0).Value = 0
                Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                Set x = Range(Cells(1, 2), cell.Offset(z - 1, 9))
                ActiveSheet.PageSetup.PrintArea = x.Address
                ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
                y.EntireRow.Hidden = True
                End If
    Next
    'Quay lai
    cotho.EntireRow.Hidden = False

    'Columns("I:I").EntireColumn.Hidden = False
    Range("O2").Value = ""
    Range("O1").Value = ""
    Range("P1").Value = ""
last:     Exit Sub
End Sub
Em cám ơn.
mình xem qua, chứ không hiểu quy luật ban đầu của tác giả, do bạn đã biến tấu khá nhiều (xóa name "tongcong", ẩn cột range check o2,o1,p1),
nếu cần gấp bạn có thể tham khảo cách học gạo sau
bạn mở hộp thoại code ALT+F11, tìm sub "intungho" như phía dưới, trong dòng code của tác giả, bạn xóa đoạn từ dòng "Kiem tra dieu kien vao" đến trước dòng "Tien hanh in".


Mã:
Sub intungho()
Dim i As Integer
   Dim x As Range
   Dim y As Range
    On Error GoTo last
        Dim cotho As Range
        Dim cell As Range
        Dim z As Integer
        Dim hoinx As Integer
        Dim hodaux As Integer
        Dim hocuoix As Integer
        Dim honhay As Integer
     
        Set cotho = Range(Range("A5"), Range("tongcong").Offset(-1, 0))
            'Columns("I:I").EntireColumn.Hidden = True ' ?n c?t I
            hoinx = Range("O2").Value       'in h? c?n in
            hodaux = Range("O1").Value    'in t?
            hocuoix = Range("P1").Value    ' ??n h?
'Kiem tra dieu kien vao
If hoinx > 0 Then
        cotho.EntireRow.Hidden = True '???c s? d?ng ?? ?n toàn b? các hàng trong vùng cotho (các hàng t? dòng 9 ??n dòng "tongcong" - 1).
        For Each cell In cotho
                If cell.Value = 1 And cell.Offset(0, 1).Value = hoinx Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
                End If
        Next
 
ElseIf hodaux > 0 And hocuoix > 0 Then
      cotho.EntireRow.Hidden = True
      For honhay = hodaux To hocuoix
            For Each cell In cotho
            If cell.Value = 1 And cell.Offset(0, 1).Value = honhay Then
                    z = 0
                    Do
                    z = z + 1
                    Loop While cell.Offset(z, 0).Value = 0
                    Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                    y.EntireRow.Hidden = False
            End If
            Next
        Next honhay
Else:
        cotho.EntireRow.Hidden = False
End If
 'Tien hanh in
    For Each cell In cotho
                If cell.Value = 1 And cell.EntireRow.Hidden = False Then
                z = 0
                Do
                z = z + 1
                Loop While cell.Offset(z, 0).Value = 0
                Set y = Range(cell.Offset(0, 1), cell.Offset(z - 1, 9))
                Set x = Range(Cells(1, 2), cell.Offset(z - 1, 9))
                ActiveSheet.PageSetup.PrintArea = x.Address
                ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
                IgnorePrintAreas:=False
                y.EntireRow.Hidden = True
                End If
    Next
    'Quay lai
    cotho.EntireRow.Hidden = False

    'Columns("I:I").EntireColumn.Hidden = False
    Range("O2").Value = ""
    Range("O1").Value = ""
    Range("P1").Value = ""
last:     Exit Sub
End Sub
Cám ơn bác hvnhpro nhiều
 
Upvote 0
Web KT
Back
Top Bottom