PPT 팁 - 원형 도형 안에 눈금 그리기
방사형 원형 차트 또는 시계모양, 레이더, UI 등에서 사용하는 눈금을 그리는 팁이다.

눈금 도형 그리기
눈금의 첫 번째 방법은 도형으로 그리는 방법이다.
수식 도형 선택하기

해당 수식 도형을 선택하고 드래그하여 슬라이드에 삽입한다.
도형 크기 및 크기 지정하기

도형을 클릭한 경우 흰색과 노랑 핀을 선택 할 수 있다.
흰색 핀은 도형의 크기를 늘리거나 위치를 변경할 수 있고 노랑 핀은 도형을 조정할 수 있다.
도형을 조정하여 눈금처럼 만들어주도록 한다.
그 다음 도형의 윤곽선을 제거한다.

도형 복사 -> 붙여넣기

- 도형을 클릭한다.
- 선택된 도형 Ctrl+D 명령어로 도형을 복사한다.
- 복사한 도형을 원형 도형과 똑같은 위치에 둔다.
- 복사한 도형을 회전 아이콘 클릭하여 90도 회전한다.
마무리
도형을 90도 뿐 아니라 45도 23도 추가가 필요함으로 복사한다.

삐뚤어진 부분은 여기서 원형 도형을 추가하여 위치를 맞춰주도록 한다.

매크로 사용하기
앞서 설명한 원형에 눈금 그리는 노가다가 심하다. 만약 눈금이 많이 필요한 경우 까마득하므로 매크로를 사용하여 만들어주도록 한다.
매크로 열기

파워포인트 화면의 [보기] 리본탭의 매크로를 누르도록 한다.

열린 매크로 팝업에서 매크로 이름을 "GridlineCircle" 입력한 다음 만들기를 클릭한다.
그러면 파워포인트에서 비주얼베이직 언어로 편집할 수 있는 창이 열린다.
Sub GridlineCircle()
Dim sld As Slide
Const Count As Integer = 32 '눈금갯수
Const ShapeWidth As Integer = 3
Const Angle As Integer = 360
Dim i As Integer
Dim SW As Single 'Dim SW!
Dim SH As Single 'Dim SH!
With ActivePresentation.PageSetup
SW = .SlideWidth
SH = .SlideHeight
End With
Set sld = ActivePresentation.Slides(ActiveWindow.View.Slide.SlideIndex)
For i = 1 To Count / 2
With sld.Shapes.AddShape(167, SW / 2 - ShapeWidth, SH / 4, ShapeWidth, SH - 2)
.Name = i
.Adjustments(1) = 0.02
.Adjustments(2) = 0.98
.Rotation = (Angle / Count) * (i - 1)
.Line.Visible = msoFalse
If i = 1 Then
.Select msoTrue
Else
.Select msoFalse
End If
End With
Next i
ActiveWindow.Selection.ShapeRange.Group.Name = "shape_" & iCount
End Sub
코드 의미는 다음과 같이 구성되어 있다.
Dim sld As Slide
Const Count As Integer = 32 '눈금갯수
Const ShapeWidth As Integer = 3
Const Angle As Integer = 360
Dim i As Integer
Dim SW As Single 'Dim SW!
Dim SH As Single 'Dim SH!
눈금을 그리는데 필요한 변수이다.
- sId 는 Slide 객체 변수로 사용한다.
- 눈금 갯수로 사용할 Count 이름은 정수형 변수로 선언한다.
- SW, SH 현재 슬라이드의 Width, Height 단정도 부동소수점 실수형 변수로 선언한다.
- 회전 용도로 Angle 변수도 사용한다.
With ActivePresentation.PageSetup
SW = .SlideWidth
SH = .SlideHeight
End With
현재 열려 있는 프레젠테이션의 슬라이드 너비와 높이 값을 구한다.
- .SlideWidth: 슬라이드의 가로크기
- .SlideHegiht: 슬라이드의 세로크기
구한 슬라이드의 크기를 각각 SW 변수와 SH 변수로 할당한다.
Set sld = ActivePresentation.Slides(ActiveWindow.View.Slide.SlideIndex)
현재 보고 있는 슬라이드를 가져온다.
만약 선택한 슬라이드를 갖고 와야 한다면 Set sld = ActiveWindow.Selection.SlideRange(1)
함수로 가져올 수 있다.
For i = 1 To Count / 2
...
...
Next i
눈금은 대칭형 구조, 양면 회전하므로 눈금 갯수 /2 한 만큼 반복문을 실행합니다.
반복문 내부에는 눈금을 그리는 코드를 추가합니다.
With sld.Shapes.AddShape(167, SW / 2 - ShapeWidth, SH / 4, ShapeWidth, SH - 2)
.Name = i
.Adjustments(1) = 0.02
.Adjustments(2) = 0.98
.Rotation = (Angle / Count) * (i - 1)
.Line.Visible = msoFalse
If i = 1 Then
.Select msoTrue
Else
.Select msoFalse
End If
End With
이 코드부터 천천히 해석하도록 한다.
With sld.Shapes.AddShape(167, SW / 2 - ShapeWidth, SH / 4, ShapeWidth, SH - 2)
해당 sId 슬라이드를 가리키는 변수에서 Shapes.AddShape 도형을 추가
괄호 안의 4개의 인자 값은 다음과 같이 사용
- PowerPoint VBA에서
167
상수값은 자동도형 ID(수식 도형 '=' 모양)임Left = SW / 2 - ShapeWidth
슬라이드 가로 중앙에 위치,
추가로 도형 두께만큼 위치 이동Top = SH / 4
슬라이드 세로 중앙에 위치Width = 3
매우 얇은 너비Height = SH - 2
슬라이드 전체 높이
.Name = i
- 도형 이름을 지정한다. 반복문의 카운트 "1", "2" 값으로 기입되어 있다.
.Adjustments(1) = 0.02
.Adjustments(2) = 0.98
- 도형 모양을 미세 조정하는 파라미터이다.
도형에 따라 영향이 크다. - 상단의 도형 노랑핀을 생각하면 이해하기가 쉽다.
.Rotation = (Angle / Count) * (i - 1)
- 생성된 도형을 일정한 간격으로 회전
- 전체 원(360도)을
Count
로 나누고, 현재 순번에 따라 회전 적용 - 결과적으로 도형들이 원형으로 균등 배치
- 전체 원(360도)을
.Line.Visible = msoFalse
- 도형의 테두리 선을 없앰 (선 안 보이게 설정)
If i = 1 Then
.Select msoTrue
Else
.Select msoFalse
End If
- 도형을 그룹핑하기 위한 트릭이다.
첫 번째 도형만 msoTrue 형태로 자동 선택하고 나머지는 msoFalse 자동 선택되지 않도록 한다.
ActiveWindow.Selection.ShapeRange.Group.Name = "shape_" & iCount
- 현재 선택된 도형을 그룹으로 묶는다.
이름은 count 값은 32 상수로 지정하였으므로 "shape_32" 이름으로 생성된다.
매크로 실행

매크로 코드를 기입하였다면 생성한 매크로를 선택하고 실행해보도록 한다.

깔끔하게 원형 눈금 도형이 만들어진다.
추가 개선하기
만약 눈금 특정 위치의 눈금을 진하게 하거나 색깔이 입히고 싶은 경우가 있다.
해당 기능을 추가해보도록 한다.
...
Dim Color As Long
Color = RGB(255, 120, 120)
For i = 1 To Count / 2
With sld.Shapes.AddShape(167, SW / 2 - -ShapeWidth, SH / 4, ShapeWidth, SH / 2)
.Name = i
.Adjustments(1) = 0.02
.Adjustments(2) = 0.98
.Rotation = (Angle / Count) * (i - 1)
.Line.Visible = msoFalse
.Fill.ForeColor.RGB = Color
'4개마다 라인 진하게
If (i - 1) Mod 4 = 0 Then
.Line.Visible = msoTrue: .Line.Weight = 3
.Line.ForeColor.RGB = Color
Else
.Line.Visible = msoFalse
End If
If i = 1 Then
.Select msoTrue
Else
.Select msoFalse
End If
End With
Next i
...
도형을 컬러로 채우고, 첫 번째 도형부터 4개마다 라인을 표시하고 색깔을 입혔다.
