'엑셀표 테두리 씌우기'에 해당되는 글 1건

728x90

표에서 특정한 값이 들어 있는 행만 굵은선으로 테두리를 씌우고 싶은 경우에 대한 문의 사항이 있어서 작성해봤습니다.



특정숫자테두리선.xlsm


VBA 코드는 아래와 같습니다.

VBA 코드 작업을 하다보니 구간범위 설정할 때 Cells(Rows.Count,"G").End(3) 과 같은 걸 잘못 지정하면 원하지 않는 결과가 나올 수도 있습니다.

무슨 말인고 하면 G열의 데이터가 들어있는 마지막셀을 찾으라는 것이라서 만약 G열의 데이터가 전부 삭제되고 없는 경우에는 표 전체에 적용했던 것이 한줄만 적용될 수도 있다는 겁니다.

그래서 가장 마지막 라인의 값이 들어있는 열의 행의 값을 저장했다가 그걸 이용하면 문제가 생기지 않습니다.

Range(rngC, rngC.Offset(, 6)) 의 의미는 rngC 현재 셀, rngC.offset(,6) 은 rngC.offset(0,6) 을 줄여서 사용한 것이며, offset(0,6) 의 의미는 현재셀로부터 행은 변동이 없고, 열쪽으로 6번 우측이라는 뜻입니다.

따라서 Range(시작셀, 마지막셀)은 같은 행에서 열이 7개를 포함하고 있다는 겁니다.

열의 숫자가 다르면 늘려주거나 줄여주면 됩니다.


Sub Thickborder()
    Dim rngC As Range       '// 행을 반복할 변수
    Dim rngAll As Range     '// 표 전체 범위 지정
    Dim rngDB As Range      '// 같은 행의 구간범위 지정
    Dim endRow As Long      '// 표(값이 들어있는) 마지막 행
    Dim k As Integer
       
    Set rngAll = Range([A1], Cells(Rows.Count, "A").End(3)) '// 표의 전체범위 구간 지정
    endRow = Cells(Rows.Count, "A").End(3).Row
    Range([A1], Cells(endRow, "G")).Borders.LineStyle = xlLineStyleNone
    '// 표의 전체 범위 선지정 전부 해제
   
    For Each rngC In rngAll
        If rngC = 1 Then
            Set rngDB = Range(rngC, rngC.Offset(, 6))   '// 같은 행의 범위 지정
            rngDB.BorderAround LineStyle:=xlContinuous, Weight:=xlThick, ColorIndex:=14
            '// 외곽 테두리 선만 원하는 색상으로 지정
            k = k + 1
        End If
    Next rngC
   
    If k > 0 Then
        MsgBox k & " 개 테두리선 표시"
    Else
        MsgBox "표시할 영역이 없음"
    End If
End Sub

블로그 이미지

Link2Me

,