표에서 특정한 값이 들어 있는 행만 굵은선으로 테두리를 씌우고 싶은 경우에 대한 문의 사항이 있어서 작성해봤습니다.
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
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
[VBA] 작업량 실적 그래프화 표시 (0) | 2015.05.14 |
---|---|
MAC address 주소 가져오는 VBA (0) | 2015.05.09 |
요일별 최대값, 최소값 구하는 VBA (0) | 2015.05.05 |
[VBA] 범위구간의 행 전체가 비어 있을 경우 삭제 (0) | 2015.05.04 |
메모리 부하없이 다량의 주소 정리 (0) | 2015.05.01 |