- 최초 작성일: 2000-03-24
- 최종 수정일: 2026-09-30
- 조회수: 22 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 사각형그리기Ⅰ
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
이제 Visual Basic Editor(VBE)와 많이 친해지셨습니까? ^^ John Walkenbach라는 엑셀의 대가가 있는데 이 분의 글 중에 아래와 같은 글이 있더군요
"Millions of people throuthout the world use Excel. I monitor spreadsheet-related newsgroups on the Internet, … only five percent of Excel users really understand what the product is capable of."
"전 세계적으로 보아 수백만의 사람이 엑셀을 사용하고 있다. 스프레드시트와 관련된 인터넷을 모니터링 해본 결과, 불과 5%의 사람들만이 엑셀의 (모든) 기능을 제대로 이해하고 있다"
이 강좌를 보시는 분 중에는 아마도 어제 소개해 드린 VB Editor를 처음 보시는 분도 있을 것이고 조금 사용해 본 분들도 있을 것입니다. "엑셀"이라는 물건, 비싼 돈주고 외국에서 수입해 온 수입품입니다. 엑셀을 단순히 값비싼 전자계산기 정도의 기능만 있는 것으로 생각해 오신 분들은 이 기회에 "상위 5%"의 파워유저가 되어 보시는 것도 괜찮을 것입니다(물론 Exceller도 상위 5%에 들기 위해 목하 노력중입니다 ^^;).
오늘 강좌 파일의 제목을 보니 "사각형그리기"라고 되어 있지요?(웬 난데없이 사각형?) 사각형을 그리긴 그리는데 그냥 손으로 그리는 것이 아니고 "매크로 기록" 기능을 이용해서 그리도록 합니다.
사각형그리기Ⅰ
핵심 요약: 매크로 기록으로 사각형 그리기
매크로 기록 기능으로 작업을 기록하면 VBA 코드가 자동으로 만들어집니다. 그 코드를 읽어 보는 것이 VBA를 익히는 첫걸음입니다.
- 기록: 매크로 기록 시작 후 사각형을 그리고 기록을 중지합니다.
- 프로시저: Sub ~ End Sub로 이루어진 코드 덩어리입니다.
- 주석: 작은따옴표(')로 시작하는 줄은 실행에서 제외됩니다.
- 줄 잇기: 문장 끝에 공백 하나와 _를 쓰면 두 줄이 한 문장으로 인식됩니다.
Step 1: 매크로 기록으로 사각형 그리기
(1) Visual Basic 도구모음 나타내기
Visual Basic 도구모음을 나타나게 합니다.
(2) 매크로 기록 시작하기
"도구-매크로-새 매크로 기록" 메뉴를 선택하거나 "매크로 기록" 아이콘을 클릭합니다.
(3) 매크로 이름 지정하기
"매크로 기록" 대화상자에서 "매크로 이름" 부분에 "사각형그리기"라고 입력하고 확인 버튼을 누릅니다.
(4) 사각형 그리고 색칠하기
아래와 같이 적당한 크기의 사각형을 하나 그리고 빨간색을 칠합니다. 혹시 "사각형은 어떻게 그리나요?" 하는 분은 없으시겠지요?('도형-기본 도형'에서 그리면 되지요)
(5) 기록 중지하기
"도구-매크로-기록 중지" 메뉴를 선택하거나 기록 중지 아이콘을 누릅니다.
참고: 최근 버전의 Excel에서는 Visual Basic 도구모음이 없고, [개발 도구] 탭(또는 상태 표시줄 왼쪽 아래)의 [매크로 기록]과 [기록 중지]를 사용합니다. [개발 도구] 탭이 보이지 않으면 [파일-옵션-리본 사용자 지정]에서 체크하세요.
(6) VB Editor에서 확인하기
이제 VB Editor(Visual Basic Editor)로 가 봅니다.
(6) 어라? 금방 작업한 거라곤 빨간 사각형을 하나 그렸을 뿐인데 웬 얄궂은 문자들이 잔뜩 기록이 되어 있지요?
위와 같이 Sub OOO() ~ End Sub와 같은 것을 "프로시저"라고 부릅니다. 위의 파일은 한 개의 프로시저로 이루어진 모듈시트인 것이지요.
코드 앞에 작은 따옴표(')가 표시되어 있으면 그것은 주석표시로서 그 부분은 실행에서 제외됩니다. 그런데 아무리 컴퓨터라고는 하지만 "권현욱이(가) XXXXXX에 기록한 매크로"라고 반말을 하니까 기분이 나빠지는데… 어쩌겠습니까? 감정이 있어 그런게 아니고 원래 만들어 질 때부터 그리되어 있었는걸… 우리가 참아야지요.
Sub 사각형그리기()
'
' 사각형그리기 Macro
' 권현욱이(가) 2000-03-23에 기록한 매크로
'
'① 현재 시트에 사각형 도형을 추가하고 선택
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 78#, 554.25, 84#, 81.75). _
Select
'② 사각형 내부를 색상 10(빨간색)으로 채움
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10
'③
Selection.ShapeRange.Fill.Visible = msoTrue
'④
Selection.ShapeRange.Fill.Solid
End Sub
① Activesheet.Shapes.AddShape(msoShapeRectangle,…).select 위 문장을 풀이하면... 현재 시트에.도형을.추가하고(사각형,왼쪽에서의 거리,위에서의 거리,사각형폭, 사각형높이).선택하라 뭐 이렇게 되겠지요. 문장이 길어질 경우 문장의 끝에 "(공백1간)_"라고 해 주면 그 두 줄은 하나의 문장으로 인식이 됩니다.
② 선택된것.채우기.전면색상.색상=10, 즉 빨간색으로 사각형 내부를 채우라는 명령입니다. ③, ④번 행은 없어도 실행에는 지장이 없습니다.
참고: SchemeColor는 예전 버전의 색상표(팔레트) 번호를 사용하는 방식입니다. 최근 버전에서는 매크로를 기록하면 .Fill.ForeColor.RGB = RGB(255, 0, 0)처럼 RGB 값으로 색을 지정하는 코드가 만들어지므로, 색을 직접 지정할 때는 RGB 방식을 쓰시는 것이 좋습니다.
(7) 매크로 실행하기
이제 빨간 사각형을 그리고 싶다면 시트내 어디에서나 "도구-매크로-매크로" 또는 아래 아이콘을 눌러 "사각형그리기"를 선택, 실행하면 됩니다.
Step 2: 응용해 보기
이상에서 설명드린 사항을 약간 응용해서 아래와 같은 것을 만들어 보았습니다.
Sub MakeRectangles1()
Dim intX As Integer
Dim intY As Integer
Dim rngAdd As Range
Set rngAdd = ActiveSheet.Range("b115")
For intX = 20 To 120 Step 10
For intY = 20 To 120 Step 10
ActiveSheet.Rectangles.Add(rngAdd.Left + intY, _
rngAdd.Top + intX, 8, 8).Select
Selection.Interior.ColorIndex = Int(Rnd * 56) + 1
Next intY
Next intX
ActiveSheet.Buttons.Add(Range("e115").Left, Range("e115").Top, _
Range("e115").Width * 2, Range("e115").Height).Select
With Selection
.Caption = "사각형 지우기"
.Characters.Font.Size = 9
.OnAction = "DelRec"
End With
Range("e115").Select
MsgBox "사각형을 " & ActiveSheet.Rectangles.Count & "개 그렸습니다" _
& vbCrLf & """사각형 지우기""" & "버튼을 누르면 지웁니다.", , "//LPRINCE"
End Sub
Sub DelRec()
Dim btn As Button
ActiveSheet.Rectangles.Delete
For Each btn In ActiveSheet.Buttons
If btn.Caption = "사각형 지우기" Then btn.Delete
Next btn
End Sub
참고: 위 예제의 Rectangles 컬렉션과 Buttons 컬렉션은 Excel 97 시절부터 쓰던 옛 방식입니다. 최근에는 Shapes.AddShape로 도형을 추가하는 방식을 사용합니다. 옛 방식도 여전히 동작하지만, 새로 작성하실 때는 Shapes를 사용하시기 바랍니다.
실행해 보셨나요? 어떻습니까? 재미있지요? 이 부분에 대한 코드는 다음 강좌에서부터 하나씩 설명드리지요.
마무리
오늘은 여기까지…
정리 — 매크로 기록과 코드 해석 요약
| 코드 | 의미 | 비고 |
|---|---|---|
| ActiveSheet.Shapes.AddShape(msoShapeRectangle, …).Select | 현재 시트에 사각형을 추가하고 선택 | 왼쪽·위쪽 거리, 폭, 높이 지정 |
| .Fill.ForeColor.SchemeColor = 10 | 사각형 내부를 빨간색으로 채움 | 색상표 번호 사용 |
| .Fill.Visible / .Fill.Solid | 채우기 표시·단색 채우기 | 생략해도 실행에 지장 없음 |
| _ (공백 + 밑줄) | 줄 잇기 | 두 줄이 한 문장 |
자주 묻는 질문 (FAQ)
Q1. 매크로 기록으로 만든 코드의 주석은 어떻게 구분하나요?
코드 앞에 작은따옴표(')가 있으면 주석이며 실행에서 제외됩니다.
Q2. 긴 문장은 어떻게 여러 줄로 나눠 쓰나요?
문장 끝에 공백 1칸과 밑줄(_)을 쓰면 두 줄이 하나의 문장으로 인식됩니다.
Q3. 왜 매크로 기록으로 사각형을 그리나요?
기록된 코드를 통해 VBA 코드의 구조를 눈으로 확인하고, 도형·반복문을 익히는 예제로 삼기 위해서입니다.
마치며
응용 예제의 코드는 다음 강좌부터 하나씩 설명드립니다.