완성 예
얼마 전까지 준우(Exceller 주니어)의 장래희망은 '개구리 중사 케로로'가 되는 것이었습니다(지금은 '파워레인저 트레져포스'가 되겠다는군요. -_-;). 준우와 함께 케로로를 보면서 놀다가 이런 것을 만들어 보았습니다. 이름하야 '케로로와 친구들 전투력 비교 차트'입니다.
완성 예
작성 과정
1. 만드는 방법은 아주 간단합니다. 예제 파일을 열고 '비교차트 만들기' 버튼을 클릭하면 4개의 레이더 차트(다른 말로 '방사형' 차트)가 좌르륵~ 만들어집니다.
2. '완성 예'와 같은 형태를 만들기 위해 이름 정의를 먼저 해 두고 진행합니다. B10:E19 영역을 범위로 지정하고 '셀 병합' 합니다. F10:I19, B20:E29, F20:I29 영역들에 대해서도 [셀 병합]을 한 다음, 각각의 영역에 Chart1 ~ Chart4라는 이름을 지정합니다.
3. 레이더 차트를 작성할 때 사용되는 B2:F8 영역에 대해서 'Source'라는 이름도 지정해줍니다.
4. VB Editor에서(ALT + F11) [삽입] - [모듈] 메뉴를 이용하여 모듈을 하나 삽입하고 다음과 같은 코드를 작성합니다. 엑셀 2007 버전에 맞게 작성된 것이므로 그 이전 버전에서는 제대로 작동하지 않을 수 있습니다. 많이 다르진 않고 색상 표현과 관련된 일부 오브젝트에서 차이가 있습니다.
Sub CompareRadar()
' 등장인물들과 배역을 설정합니다(변수 정의).
Dim rngSource As Range
Dim i As Integer
Dim strSheetName As String
Set rngSource = Range("Source")
Application.ScreenUpdating = False
On Error Resume Next
' 현재 시트에 이미 만들어진 차트가 있다면 지웁니다. 만약 차트가 없다면 오류가 발생아므로
' On Error Resume Next 구문을 추가하였습니다.
ActiveSheet.ChartObjects.Delete
strSheetName = ActiveSheet.Name
' 몇 명의 전투력을 비교할 것인지 순환횟수를 지정합니다.
For i = 1 To rngSource.Columns.Count - 1
Charts.Add
' 차트의 종류, 원본 데이터, 차트를 이동할 위치 등을 지정합니다.
With ActiveChart
.ChartType = xlRadarFilled
.SetSourceData Worksheets(strSheetName). _
Range(rngSource.Columns(1).Address _
& "," & rngSource.Columns(i + 1).Address)
.Location xlLocationAsObject, strSheetName
End With
' 차트를 삽입할 위치를 지정합니다.
' 변수 i 값을 통해 각 차트별로 위치를 다르게 지정합니다.
With ActiveSheet.ChartObjects(i)
.Top = Range("Chart" & i).Top
.Left = Range("Chart" & i).Left
.Width = Range("Chart" & i).MergeArea.Width
.Height = Range("Chart" & i).MergeArea.Height
End With
' 삽입한 차트의 각종 서식을 지정합니다.
' 생소한 오브젝트나 메서드, 속성 등에 대해서는 도움말을 통해 확인하세요.
With ActiveChart
.SeriesCollection(1).Fill.OneColorGradient _
Style:=msoGradientHorizontal, _
Variant:=1, Degree:=0.9
.SeriesCollection(1).ApplyDataLabels
.Legend.Delete
.ChartStyle = 30
.SetElement (msoElementChartTitleCenteredOverlay)
With .SeriesCollection(1).DataLabels
.Font.ColorIndex = 3
.Font.Bold = True
.Interior.ColorIndex = 6
End With
With .ChartTitle
.Font.Size = 12
.Left = 0
.Top = 0
End With
With .Axes(xlValue)
.MajorGridlines.Border.LineStyle = xlDot
.MaximumScale = 10
End With
End With
Next i
rngSource.Cells(1).Select
Application.ScreenUpdating = True
MsgBox "전투력 비교시트 작성이 완료되었습니다!"
End Sub
CODE
5. 워크시트로 돌아가서 [양식 컨트롤]의 [단추] 컨트롤을 하나 삽입하고 오른쪽 마우스 버튼을 클릭한 다음 [매크로 지정] 메뉴를 선택합니다.
완성 예
6. [매크로 지정] 대화상자에서 [매크로 이름] 항목을 보면 앞에서 작성한 'CompareRadar' 프로시저가 나타나는데 이것을 선택하고 [확인] 버튼을 클릭합니다. 이제 이 버튼을 클릭할 때마다 레이터 차트들이 자동으로 생성됩니다.
엑셀 강의 시간에 웬 VBA야. 이건 배쉰이야 배쉰!!
이렇게 생각하는 분이 모쪼록 없기를 바랍니다. 결국 매크로나 VBA도 우리가 넘어야 할 산입니다.^^
다음 시간에 또...