Rút gọn code kẻ khung

  • Thread starter Thread starter iVBA
  • Ngày gửi Ngày gửi
Liên hệ QC

iVBA

Thành viên mới
Tham gia
5/12/10
Bài viết
29
Được thích
11
Em có 1 đoạn code kẻ khung này:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect([D5:I16], Target) Is Nothing Then
        Target.Borders(xlDiagonalDown).LineStyle = xlNone
        Target.Borders(xlDiagonalUp).LineStyle = xlNone
        With Target.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    End If
End Sub
AC xem có cách nào viết code này gọn hơn nữa?
 
Em có 1 đoạn code kẻ khung này:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect([D5:I16], Target) Is Nothing Then
        Target.Borders(xlDiagonalDown).LineStyle = xlNone
        Target.Borders(xlDiagonalUp).LineStyle = xlNone
        With Target.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Target.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    End If
End Sub
AC xem có cách nào viết code này gọn hơn nữa?
Với code của bạn thì chỉ cần sửa đơn giản thế này thôi
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([D5:I16], Target) Is Nothing Then Target.Borders.LineStyle = 1
End Sub
Tuy nhiên vẫn phải bẫy lỗi trong trường hợp chèn, xóa dòng ---> Tự bạn suy nghĩ đi
 
Lần chỉnh sửa cuối:
Upvote 0
Với code của bạn thì chỉ cần sửa đơn giản thế này thôi
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([D5:I16], Target) Is Nothing Then Target.Borders.LineStyle = 1
End Sub
Tuy nhiên vẫn phải bẫy lỗi trong trường hợp chèn, xóa dòng ---> Tự bạn suy nghĩ đi

Anh ndu ơi, em đã thử nhiều nhưng em vẫn chưa bẫy lỗi chèn, xoá dòng được. Anh tư vấn thêm cho em nhé!
 
Upvote 0
Anh ndu ơi, em đã thử nhiều nhưng em vẫn chưa bẫy lỗi chèn, xoá dòng được. Anh tư vấn thêm cho em nhé!
Tạm thời có thể hạn chế lỗi thế này:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Rng As Range
  On Error GoTo ExitSub
  If Not Intersect([D5:I16], Target) Is Nothing Then
    Set Rng = Intersect([D5:I16], Target)
    If Not Rng Is Nothing Then Rng.Borders.LineStyle = 1
  End If
ExitSub:
End Sub
Còn như muốn khi Insert hoặc Delete Row mà không cho code hoạt động luôn thì tôi nghĩ sẽ khó đấy
(Đúng ra món này có thể thực thi bằng Conditional Formating khá dể dàng, tại sao bạn không dùng nhỉ?)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom