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.
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ự.
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:
Đế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:
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
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
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
Đố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:
Bạn cần đăng nhập để thấy link