Một cách tạo đường kẻ ô đơn giản

tuhocvba

Administrator
Thành viên BQT
Vì không hiểu về đối tượng cũng như thuộc tính của nó, cho nên nhiều khi chúng ta record macro và sử dụng đoạn code ấy cho chương trình. Nhược điểm là code rất dài, có nhiều dòng code thậm chí còn không cần thiết.
Ngay cả bản thân tôi, với tình huống kẻ ô, tôi nghĩ mình đã giản lược code đi rồi, mà hóa ra vẫn chưa triệt để.
Ví dụ 1: Đoạn code dưới đây sẽ kẻ ô vùng A1: C4.
Mã:
Sub Macro1()
    Range("A1:C4").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End Sub
Với kinh nghiệm nhiều năm xài record macro, cứ cái gì là Automatic là có thể bỏ được đi.
Do đó tôi thu gọn code lại như sau mà tác dụng vẫn tương tự.
Mã:
Sub Macro2()
    Range("A1:C4").Select

    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
      
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
  
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
 
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
 
    End With
End Sub
Nhìn code thì có vẻ đương nhiên, chí ít phải có Top, Bottom, Right, Left.
Tuy nhiên, code trên vẫn còn có thể rút gọn như sau:
Mã:
Sub Sample3()
    Range("A1:C4").Borders.LineStyle = True
End Sub
Đến đây thì các bạn đã chán chưa? Ngắn quá phải không nào.
Đối với Collection Borders nếu chúng ta không chỉ định rõ ràng (Bottom, Top,...), khi đó giá trị trả về của nó mặc định là toàn bộ các đường xung quanh khu vực cần kẻ ô.
Trong ba thông số LineStyle (đường liền hay đường đứt đoạn), Weight (độ dày mỏng của đường) , ColorIndex (màu của đường); thì thật ra chỉ có thông số LineStyle là cần thiết phải chỉ định rõ ràng. Weight, ColorIndex có thể giản lược.
Nguồn tham khảo:
 
Top