Làm sao để đóng khung (Nét đôi) dòng dưới của cột mã hàng

Liên hệ QC

congnguyen88

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
22/7/14
Bài viết
356
Được thích
31
Chào anh chị diễn đàn. Hôm qua em có hỏi vấn đề xóa mã hàng trùng tên và đã được các anh chị đã chỉ cách em xóa rồi. Code chạy rất ok. sáng em có in báo cáo thì Sếp em bảo phải có làm thêm có đường gạch đôi để dễ phân biện giữa các mã hàng. Cụ thể như hình bên dưới. Em xin cảm ơn mọi người ạ
1584974954421.png
 

File đính kèm

  • gach chan.xlsb
    18.2 KB · Đọc: 16
Lần chỉnh sửa cuối:
Chào anh chị diễn đàn. Hôm qua em có hỏi vấn đề xóa mã hàng trùng tên và đã được các anh chị đã chỉ cách em xóa rồi. Code chạy rất ok. sáng em có in báo cáo thì Sếp em bảo phải có làm thêm có đường gạch đôi để dễ phân biện giữa các mã hàng. Cụ thể như hình bên dưới. Em xin cảm ơn mọi người ạ
View attachment 233910
Thử dùng code sau.
Mã:
Sub Set_Borders()
Dim sCell As Range, sRow%
With Sheet1
    sRow = .Range("B100000").End(xlUp).Row
    For Each sCell In .Range("B5:B" & sRow)
        If sCell.Value <> "" Then
            With sCell.Resize(, 5).Borders(xlEdgeTop)
                .LineStyle = xlDouble
                .Weight = xlThick
            End With
        End If
    Next sCell
End With
End Sub
 
Upvote 0
Chào anh chị diễn đàn. Hôm qua em có hỏi vấn đề xóa mã hàng trùng tên và đã được các anh chị đã chỉ cách em xóa rồi. Code chạy rất ok. sáng em có in báo cáo thì Sếp em bảo phải có làm thêm có đường gạch đôi để dễ phân biện giữa các mã hàng. Cụ thể như hình bên dưới. Em xin cảm ơn mọi người ạ

Thử một cách khác.

Mã:
 Sub ToVien_Double()
    Dim DongCuoi As Range
    Set DongCuoi = Range("B5", Range("F1000").End(xlUp))
        With Sheet1
            .Range("B3").CurrentRegion.AutoFilter Field:=1, Criteria1:="<>"
            DongCuoi.SpecialCells(xlCellTypeVisible).Borders(xlEdgeTop).LineStyle = xlDouble
            .Range("B3").AutoFilter
        End With
    End Sub
 
Upvote 0
Thử dùng code sau.
Mã:
Sub Set_Borders()
Dim sCell As Range, sRow%
With Sheet1
    sRow = .Range("B100000").End(xlUp).Row
    For Each sCell In .Range("B5:B" & sRow)
        If sCell.Value <> "" Then
            With sCell.Resize(, 5).Borders(xlEdgeTop)
                .LineStyle = xlDouble
                .Weight = xlThick
            End With
        End If
    Next sCell
End With
End Sub
cảm ơn anh code chạy rất đúng ý em luôn ạ. Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường đôi trước đó nó vẫn nằm yên. Anh có thể viết thêm 1 đoạn để cho nó Clear đi những đường nét đôi và đóng khung bình thường 1 nét trước nằm phía trên code được không ạ. Em tự sửa code lại ok rồi ạ

Mã:
Sub Set_Borderds()

' reset cho ve dong khung binh thuong 1 net
Range("B4:F30").Borders.LineStyle = xlContinuous

' Chay code dong khung
Dim sCell As Range
    For Each sCell In Range("B5:B30") ' Du lieu Nguon
        If sCell.Value <> "" Then
            With sCell.Resize(, 5).Borders(xlEdgeTop)
                .LineStyle = xlDouble
                .Weight = xlThick
            End With
        End If
    Next sCell

End Sub
Bài đã được tự động gộp:

Thử một cách khác.

Mã:
 Sub ToVien_Double()
    Dim DongCuoi As Range
    Set DongCuoi = Range("B5", Range("F1000").End(xlUp))
        With Sheet1
            .Range("B3").CurrentRegion.AutoFilter Field:=1, Criteria1:="<>"
            DongCuoi.SpecialCells(xlCellTypeVisible).Borders(xlEdgeTop).LineStyle = xlDouble
            .Range("B3").AutoFilter
        End With
    End Sub
em cảm ơn bác. code bác chạy rất chính xác. có điều chỉ gạch chân 1 cột B thôi. đúng ra là phải gạch chân từ B đên D là ok bác ạ em tự thêm
Resize(, 5) la ok rồi. Em cảm ơn bác nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường viền đôi trước đó nó vẫn nằm yên.
Em cảm ơn bác. code bác chạy rất chính xác, có điều chỉ gạch chân 1 cột B thôi, đúng ra là phải gạch chân từ B đên D là ok bác ạ em tự thêm
Resize(, 5) la ok rồi. Em cảm ơn bác nhiều
Vậy thì thử sử dụng code sau:

Mã:
Sub TaoVien_Double()
    Dim xCell, DongCuoi As Range
    Set DongCuoi = Range("B5", Range("B1000").End(xlUp))
    Range("B3").CurrentRegion.Borders.LineStyle = xlNone
    For Each xCell In DongCuoi
        If xCell.Value <> "" Then
            xCell.Resize(, 5).Borders(xlEdgeTop).LineStyle = xlDouble
        End If
    Next xCell
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn anh code chạy rất đúng ý em luôn ạ. Có điều là khi em thay đổi dữ liệu Mã hàng thì mấy đường đôi trước đó nó vẫn nằm yên. ...
Luật chung của code vẽ vời màu mè là khi chạy code phải đổi cả vùng thành bình thường. Sau đó mới tìm những chỗ cần khác biệt mà thêm thắt màu mè.

Code sẽ làm những công việc sau:
- Tắt chức năng hiển thị màn hình
- Xác định vùng cần xử lý
- Gọi code chỉnh sửa tất cả thành dạng gạch đơn
- Đọc từng dòng, xác định dòng cần gạch kép và gọi code chỉnh thành gạch kép.
- Mở laị chức năng hiển thị màn hình
 
Upvote 0
Em cảm ơn bác. code bác chạy rất chính xác.
Em cảm ơn bác nhiều
Để trang trí màu mè hoa lá cành, tham khảo thêm code sau:

Mã:
Sub TaoVien_TrangTri()
    Dim xCell, DongCuoi As Range
    Set DongCuoi = Range("B5", Range("B1000").End(xlUp))
    Range("B3").CurrentRegion.Borders.LineStyle = xlNone
    Range("B3").CurrentRegion.Borders.ColorIndex = 38 'Màu tím
    Range("B3").CurrentRegion.BorderAround xlContinuous, xlThick
    For Each xCell In DongCuoi
        If xCell.Value <> "" Then
            xCell.Resize(, 5).Borders(xlEdgeTop).LineStyle = xlDouble
            xCell.Resize(, 5).Borders(xlEdgeTop).ColorIndex = 56 'Màu den
        End If
        Next xCell
End Sub

Kết quả:

A_Trangtri.GIF
 
Upvote 0
Sếp bạn này chắc hơi dốt về làm việc văn phòng.
Theo luật chung kế toán, đường kẻ đôi chỉ giành cho dòng kết toán. Tiếng Anh gọi là "bottom line".
Thường thì người ta chỉ đóng khung bằng đường liền, và dùng đường chấm để phân biệt từng ô trong bảng. Mỗi nhóm mới thì lại phân biệt bằng đường liền. Vừa dễ đọc số, vừa đỡ tốn mực in.

Sub MauMe()
Dim svScreenUpdating
svScreenUpdating = Application.ScreenUpdating
Dim vung As Range, vung2 As Range, i As Long
Set vung = Range("B4:F" & Cells(sht.Rows.Count, "C").End(xlUp).Row)
Call KeVienCaCum(vung)
Set vung2 = vung.Resize(1,)
For i = 1 To vung.Rows.Count - 1
If vung.Cells(i+1,1).Value <> "" Then Call KeVienDacBiet(vung2) ' sắp đến nhóm mới
Set vung2 = vung2.Offset(1,)
Next i
Application.ScreenUpdating = False
Application.ScreenUpdating = svScreenUpdating
End Sub

Sub KeVienCaCum(rg As Range)
' code kẻ viền cả bảng
End Sub

Sub KeVienDacBiet(rg As Range)
' code kẻ đôi dòng
End Sub
 
Upvote 0
Luật chung của code vẽ vời màu mè là khi chạy code phải đổi cả vùng thành bình thường. Sau đó mới tìm những chỗ cần khác biệt mà thêm thắt màu mè.

Code sẽ làm những công việc sau:
- Tắt chức năng hiển thị màn hình
- Xác định vùng cần xử lý
- Gọi code chỉnh sửa tất cả thành dạng gạch đơn
- Đọc từng dòng, xác định dòng cần gạch kép và gọi code chỉnh thành gạch kép.
- Mở laị chức năng hiển thị màn hình

dạ em cảm ơn thầy. Gợi ý của thầy em rất hay và dễ hiểu
 
Upvote 0
Sếp bạn này chắc hơi dốt về làm việc văn phòng.
Theo luật chung kế toán, đường kẻ đôi chỉ giành cho dòng kết toán. Tiếng Anh gọi là "bottom line".
Thường thì người ta chỉ đóng khung bằng đường liền, và dùng đường chấm để phân biệt từng ô trong bảng. Mỗi nhóm mới thì lại phân biệt bằng đường liền. Vừa dễ đọc số, vừa đỡ tốn mực in.

Sub MauMe()
Dim svScreenUpdating
svScreenUpdating = Application.ScreenUpdating
Dim vung As Range, vung2 As Range, i As Long
Set vung = Range("B4:F" & Cells(sht.Rows.Count, "C").End(xlUp).Row)
Call KeVienCaCum(vung)
Set vung2 = vung.Resize(1,)
For i = 1 To vung.Rows.Count - 1
If vung.Cells(i+1,1).Value <> "" Then Call KeVienDacBiet(vung2) ' sắp đến nhóm mới
Set vung2 = vung2.Offset(1,)
Next i
Application.ScreenUpdating = False
Application.ScreenUpdating = svScreenUpdating
End Sub

Sub KeVienCaCum(rg As Range)
' code kẻ viền cả bảng
End Sub

Sub KeVienDacBiet(rg As Range)
' code kẻ đôi dòng
End Sub

dạ sếp em ông dốt lắm. chỉ biết dùm hàm Sum , IF vậy thôi, Chứ Vlookup là ổng bó tay. Dốt nhưng mà ỗng nhiều tiền thầy ạ
 
Upvote 0
dạ sếp em ông dốt lắm. chỉ biết dùm hàm Sum , IF vậy thôi, Chứ Vlookup là ổng bó tay. Dốt nhưng mà ỗng nhiều tiền thầy ạ
Sếp tôi cũng chỉ biết dùng sum/if/vlookup đại khái thôi.
Dốt hay không đâu có đo bằng số hàm Excel. Nó đo bằng khả năng hiểu biết về dữ liệu và thiết kế bảng tính.
 
Upvote 0
Web KT
Back
Top Bottom