[엑셀 VBA #18] 엑셀 매크로로 서식 지정하기(테두리, 폰트, 글자크기 등)



이번 엑셀 매크로 강의에서는 엑셀 셀의 서식을 설정하는 방법에 대해 알아보겠습니다.


엑셀 매크로로 셀 테두리, 색깔, 폰트, 글자 크기 등 다양한 서식을 구성할 수 있습니다.


매크로 파일을 받고 따라와주세요.




셀 테두리 만들기

Cells(3, 3).Borders(xlEdgeLeft).LineStyle = xlContinuous    '셀의 왼쪽 테두리 설정

Cells(3, 3).Borders(xlEdgeRight).LineStyle = xlContinuous    '셀의 오른쪽 테두리 설정

Cells(3, 3).Borders(xlEdgeTop).LineStyle = xlContinuous    '셀의 위쪽 테두리 설정

Cells(3, 3).Borders(xlEdgeBottom).LineStyle = xlContinuous    '셀의 아래쪽 테두리 설정


위와 같이 테두리가 생성됩니다.

테두리의 모양을 바꾸고 싶다면 xlContinuous를 다른 값으로 바꿔주면 됩니다.


xlDashDotDot       


xlDash                 


xlSlantDashDot      


xlDouble              



테두리의 굵기를 바꾸고 싶다면 .weight 설정을 하면 됩니다.


Cells(3, 3).Borders(xlEdgeLeft).Weight = xlThin

Cells(3, 3).Borders(xlEdgeRight).Weight = xlThin

Cells(3, 3).Borders(xlEdgeTop).Weight = xlMedium

Cells(3, 3).Borders(xlEdgeBottom).Weight = xlThick






셀 색상 변경하기


Cells(4, 3).Interior.Color = vbRed




색상값은 vbRed, vbBlue등으로 설정할 수 있지만, 다양한 사용자 정의 색상은 RGB로 설정할 수 있습니다.


Cells(4, 3).Interior.Color = RGB(111, 222, 50)







문자 서식 지정하기


Cells(3, 4).Font.Size = 8        '폰트 크기(글자 크기) 설정 

Cells(4, 4).Font.Bold = True        '폰트 볼드체로 바꾸기 True/False

Cells(5, 4).Font.Name = "궁서체"    '폰트 바꾸기

Cells(6, 4).Font.Italic = True        '폰트 이탤릭체(기울임꼴) 바꾸기 True/False

Cells(7, 4).Font.Underline = True        '폰트에 밑줄 긋기 True/False








Posted by Simon K
:

[엑셀 VBA 예제5] 값에 따라 셀 색깔 바꾸는 엑셀 매크로




이번 예제는 엑셀에 값을 입력할 때 마다 지정한 값에 따라서 셀 색상이 바뀌는 엑셀 매크로입니다.


[엑셀 VBA 강의 #15]에서 강의한 내용을 응용했습니다.






위와 같은 시트에서, 거래금액 란의 금액에 따라 색깔이 자동적으로 바뀌는 매크로를 만들어 보고자 합니다.


Private Sub worksheet_change(ByVal Target As Range)


Dim i As Integer

Dim n As Integer

Dim m As Integer


If Not Intersect(Range("c2:c9"), Target) Is Nothing Then

'----------------------여기부터 범위가 1보다 클 경우

If Target.Count > 1 Then            '타겟의 범위가 1보다 크다면(바뀌는 값의 범위가 한개가 아니라면)


n =  Target.Row                    '값을 수정하는 범위의 첫 행 (가장 윗행)

m = n + Target.Count - 1            '값을 수정하는 범위의 마지막 행(첫 행 + 범위 크기 - 1)


For i = n To m                            '범위의 첫 행부터 마지막 행까지 반복


    Select Case Cells(i, 3).Value            '셀의 값을 조건으로 한 조건문

    Case 0                                        '값이 0이라면(없다면)

    Cells(i, 3).Interior.color = xlNone        '셀을 투명하게(초기화)

    Case Is < 300000                            '값이 300000보다 작다면

    Cells(i, 3).Interior.color = RGB(255, 0, 0)        'red 색상으로 변경

    Case 300000 To 10000000                '값이 300000과 10000000 사이라면

    Cells(i, 3).Interior.color = RGB(0, 255, 0)        'green 색상으로 변경

    Case Is > 10000000                        '값이 10000000보다 크다면

    Cells(i, 3).Interior.color = RGB(0, 0, 255)        'blue 색상으로 변경

    End Select

Next i                    '다음 셀에서 반복


Exit Sub                '프로시져 종료

else

End If

'-------------------------여기까지 범위가 1보다 클 경우


'-------------------------여기부터 범위가 1일경우(한개의 셀만 수정할 경우)



    Select Case Target

        Case 0

        Target.Interior.color = xlNone

        Case Is < 300000

        Target.Interior.color = RGB(255, 0, 0)

        Case 300000 To 10000000

        Target.Interior.color = RGB(0, 255, 0)

        Case Is > 10000000

        Target.Interior.color = RGB(0, 0, 255)

    End Select

End If


End Sub





※ 이해가 안된다면 [엑셀 VBA #15] 강의를 읽어보세요.





Target의 범위가 무엇을 뜻하는 것인가요?


셀의 값을 수정할 경우, 일반적으로 한 개의 셀을 선택한 후 값을 집어넣지만,

복사 붙혀넣기를 통해 여러 값을 한번에 넣을 수도 있고, 셀을 드래그 블록지정 한 후 삭제를 해서 값을 없앨 수도 있습니다.


이러한 경우 Select Case Target으로 조건문을 만든다면, 타겟의 범위가 넓고, 값이 여러개이기 때문에 에러가 나게 됩니다.

따라서, Range 범위가 1일 경우와 1보다 큰 경우를 따로 설정하여 에러를 방지하기 위함입니다.


범위가 1보다 클 경우 반복문을 사용해 셀을 하나씩 읽어들이는 방법을 사용합니다.












Posted by Simon K
: