Kẻ viền sổ nhật ký chung bằng VBA

Liên hệ QC

ketoan100

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
13/10/07
Bài viết
90
Được thích
13
Xin nhờ các anh chị biết rành về VBA thì xem và giúp em kẻ viền sổ nhật ký chung như mẫu em đã làm sẵn trong sheet của excel.
Em không biết VBA.
Xin chân thành cảm ơn anh chị rất nhiều !
 

File đính kèm

  • GIUP KE KHUNG NHAT KY CHUNG.xlsm
    379.8 KB · Đọc: 12
Xin nhờ các anh chị biết rành về VBA thì xem và giúp em kẻ viền sổ nhật ký chung như mẫu em đã làm sẵn trong sheet của excel.
Em không biết VBA.
Xin chân thành cảm ơn anh chị rất nhiều !
ý bạn là kẻ từ hàng 11 tới cuối dữ liệu (động) - cuối dữ liệu là hàng mà nơi đó cộ A không có và cột H;I có giá trị phải không????
 
Upvote 0
ý bạn là kẻ từ hàng 11 tới cuối dữ liệu (động) - cuối dữ liệu là hàng mà nơi đó cộ A không có và cột H;I có giá trị phải không????
Căn cứ theo sheet bảng mẫu thì:
Bảng có đường kẻ dọc là đường liền.
Dòng cuối cùng (kết) thì kẻ liền cả trên lẫn dưới nó.
Các dòng khác:
- Dòng có một trong 3 dữ liệu tại A,B,C là dòng phát sinh, kẻ liền trên nó.
- Dòng không có là dòng chi tiết tài khoản, kẻ đứt trên nó.
 
Upvote 0
Kẻ từ hàng 11 trở xuống đến hết. khi nghiệp vụ phát sinh bao nhiêu dòng thì nó kẻ bấy nhiêu vòng, kết thúc 1 nghiệp vụ là nó sẽ kẻ 1 đường viền đậm như MẪU NHẬT KÝ CHUNG trong sheet kế bên ấy.
Ở đó mình hạng chế cho nó chưa đến 2000 dòng.
Cảm ơn bạn đã xem qua!
Bài đã được tự động gộp:

Thêm đường viền đậm kết thúc 1 nghiệp vụ là ok. Chỉ yêu cầu như thế thôi. cảm ơn bạn rất nhiều !
 

File đính kèm

  • hinh nkc.png
    hinh nkc.png
    268.9 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
Mình tạm nghĩ nháp: Tìm dòng đầu, tìm dòng cuối, cho kẻ nét đứt từ dòng đầu +3 đến dòng cuối -1, rồi sau đó chạy vòng lặp dựa vào ô cột A có chứa dữ liệu ngày để kẻ nét liền.
 
Lần chỉnh sửa cuối:
Upvote 0
Kẻ từ hàng 11 trở xuống đến hết. khi nghiệp vụ phát sinh bao nhiêu dòng thì nó kẻ bấy nhiêu vòng, kết thúc 1 nghiệp vụ là nó sẽ kẻ 1 đường viền đậm như MẪU NHẬT KÝ CHUNG trong sheet kế bên ấy.
Ở đó mình hạng chế cho nó chưa đến 2000 dòng.
Cảm ơn bạn đã xem qua!
Bài đã được tự động gộp:

Thêm đường viền đậm kết thúc 1 nghiệp vụ là ok. Chỉ yêu cầu như thế thôi. cảm ơn bạn rất nhiều !
Bạn tham khảo thử: Click chuật phải chọn vào cái ô màu đỏ
1591331212041.png
 

File đính kèm

  • GIUP KE KHUNG NHAT KY CHUNG.xlsm
    377.2 KB · Đọc: 12
Upvote 0
Bạn xem thử
Mình cho Macro vào Nút Xem Sổ của bạn luôn rồi đó
 

File đính kèm

  • GIUP KE KHUNG NHAT KY CHUNG.xlsm
    384.9 KB · Đọc: 10
Upvote 0

File đính kèm

  • GIUP KE KHUNG NHAT KY CHUNG.xlsm
    380.3 KB · Đọc: 8
Upvote 0
Bạn xem thử
Mình cho Macro vào Nút Xem Sổ của bạn luôn rồi đó
Ý tưởng Quá hay luôn bạn ơi...
Mình xin mạn phép chỉnh lại code của bạn một tí cho nó nhẹ và gọn hơn nha....
Mã:
   With Sheet8
        lr1 = .Cells(.Rows.Count, "I").End(xlUp).Row
        For i = 11 To lr1
            If IsDate(.Cells(i, 3)) = True Then
               With .Range("A" & i & ":I" & i)
                   .Borders(xlEdgeTop).LineStyle = xlContinuous
                   .Borders(xlEdgeTop).Weight = xlThin
               End With
            End If
        Next i
        MsgBox ("complete!!!")
    End With
 

File đính kèm

  • GIUP KE KHUNG NHAT KY CHUNG (1).xlsm
    379.9 KB · Đọc: 15
Upvote 0
Mình Record Macro mới được cái này nữa. Bạn Chủ Topic tham khảo thử xem nó có bất tiện nữa không nhoé
PHP:
Sub Macro1()
'
' Macro1 Macro
'
    Dim LastRow As Long, sRng As Range, I As Long
Application.ScreenUpdating = False
LastRow = Range("I" & Rows.Count).End(xlUp).Row
Set sRng = Range("A11:A" & LastRow)
With sRng.Resize(, 9)
    .Borders.LineStyle = 1
    .Borders(xlInsideHorizontal).Weight = xlHairline
End With
With sRng.SpecialCells(xlCellTypeConstants, 23)
    For I = 0 To 8
        With .Offset(, I).Borders(xlEdgeTop)
            .LineStyle = 1
            .Weight = xlThin
        End With
    Next I
End With
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Ý tưởng Quá hay luôn bạn ơi...
Mình xin mạn phép chỉnh lại code của bạn một tí cho nó nhẹ và gọn hơn nha....
Mã:
   With Sheet8
        lr1 = .Cells(.Rows.Count, "I").End(xlUp).Row
        For i = 11 To lr1
            If IsDate(.Cells(i, 3)) = True Then
               With .Range("A" & i & ":I" & i)
                   .Borders(xlEdgeTop).LineStyle = xlContinuous
                   .Borders(xlEdgeTop).Weight = xlThin
               End With
            End If
        Next i
        MsgBox ("complete!!!")
    End With
Bạn chu đáo ghê, Code nhìn gọn hơn hẳn cái nùi Macro nguyên bản của excel
 
Upvote 0
Mình Record Macro mới được cái này nữa. Bạn Chủ Topic tham khảo thử xem nó có bất tiện nữa không nhoé
PHP:
Sub Macro1()
'
' Macro1 Macro
'
    Dim LastRow As Long, sRng As Range, I As Long
Application.ScreenUpdating = False
LastRow = Range("I" & Rows.Count).End(xlUp).Row
Set sRng = Range("A11:A" & LastRow)
With sRng.Resize(, 9)
    .Borders.LineStyle = 1
    .Borders(xlInsideHorizontal).Weight = xlHairline
End With
With sRng.SpecialCells(xlCellTypeConstants, 23)
    For I = 0 To 8
        With .Offset(, I).Borders(xlEdgeTop)
            .LineStyle = 1
            .Weight = xlThin
        End With
    Next I
End With
Application.ScreenUpdating = True
End Sub
Bác chỉ mình nhấn cái nút record nào mà dc vậy nha... mỗi hàng là 1 lon!!!!
 
Lần chỉnh sửa cuối:
Upvote 0
Mình Record Macro mới được cái này nữa. Bạn Chủ Topic tham khảo thử xem nó có bất tiện nữa không nhoé
Cảm ơn bạn đã góp ý . Chân thành cảm ơn.
Bài đã được tự động gộp:

Bạn xem thử
Mình cho Macro vào Nút Xem Sổ của bạn luôn rồi đó
Xin cảm ơn bạn rất nhiều.
Bài đã được tự động gộp:

Đã bất tiện mà sao hay được :p:p:p
Nó hay hơn mình phải tự làm tay, nó tốn rất nhiều thời gian. Lâu lắm bạn ạ. Cảm ơn bạn đã góp ý.
Bài đã được tự động gộp:

Coi thử file nha bạn
Xin cảm ơn bạn đã giúp đỡ.
 
Upvote 0
Vầy đi cho gọn.
Mã:
With Sheet8.Range("A10:A" & Sheet8.Range("I" & Rows.Count).End(xlUp).Row)
    .Resize(, 9).Borders.LineStyle = 1
    .Resize(, 9).Borders(12).Weight = 1
    Intersect(.Resize(, 9), Union(.SpecialCells(2), .Cells(.Rows.Count, 1)).EntireRow).Borders(8).Weight = 2
End With
 
Upvote 0
Vầy đi cho gọn.
Mã:
With Sheet8.Range("A10:A" & Sheet8.Range("I" & Rows.Count).End(xlUp).Row)
    .Resize(, 9).Borders.LineStyle = 1
    .Resize(, 9).Borders(12).Weight = 1
    Intersect(.Resize(, 9), Union(.SpecialCells(2), .Cells(.Rows.Count, 1)).EntireRow).Borders(8).Weight = 2
End With
Rút quá đi thôi
 
Upvote 0
Web KT
Back
Top Bottom