• 최초 작성일: 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%에 들기 위해 목하 노력중입니다 ^^;).

오늘 강좌 파일의 제목을 보니 "사각형그리기"라고 되어 있지요?(웬 난데없이 사각형?) 사각형을 그리긴 그리는데 그냥 손으로 그리는 것이 아니고 "매크로 기록" 기능을 이용해서 그리도록 합니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

사각형그리기Ⅰ

핵심 요약: 매크로 기록으로 사각형 그리기

매크로 기록 기능으로 작업을 기록하면 VBA 코드가 자동으로 만들어집니다. 그 코드를 읽어 보는 것이 VBA를 익히는 첫걸음입니다.

  • 기록: 매크로 기록 시작 후 사각형을 그리고 기록을 중지합니다.
  • 프로시저: Sub ~ End Sub로 이루어진 코드 덩어리입니다.
  • 주석: 작은따옴표(')로 시작하는 줄은 실행에서 제외됩니다.
  • 줄 잇기: 문장 끝에 공백 하나와 _를 쓰면 두 줄이 한 문장으로 인식됩니다.

Step 1: 매크로 기록으로 사각형 그리기

(1) Visual Basic 도구모음 나타내기

Visual Basic 도구모음을 나타나게 합니다.

Visual Basic 도구모음
아이엑셀러

(2) 매크로 기록 시작하기

"도구-매크로-새 매크로 기록" 메뉴를 선택하거나 "매크로 기록" 아이콘을 클릭합니다.

매크로 기록 아이콘
아이엑셀러

(3) 매크로 이름 지정하기

"매크로 기록" 대화상자에서 "매크로 이름" 부분에 "사각형그리기"라고 입력하고 확인 버튼을 누릅니다.

매크로 기록 대화상자
아이엑셀러

(4) 사각형 그리고 색칠하기

아래와 같이 적당한 크기의 사각형을 하나 그리고 빨간색을 칠합니다. 혹시 "사각형은 어떻게 그리나요?" 하는 분은 없으시겠지요?('도형-기본 도형'에서 그리면 되지요)

(5) 기록 중지하기

"도구-매크로-기록 중지" 메뉴를 선택하거나 기록 중지 아이콘을 누릅니다.

기록 중지 아이콘
아이엑셀러

참고: 최근 버전의 Excel에서는 Visual Basic 도구모음이 없고, [개발 도구] 탭(또는 상태 표시줄 왼쪽 아래)의 [매크로 기록]과 [기록 중지]를 사용합니다. [개발 도구] 탭이 보이지 않으면 [파일-옵션-리본 사용자 지정]에서 체크하세요.

(6) VB Editor에서 확인하기

이제 VB Editor(Visual Basic Editor)로 가 봅니다.

VB 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 코드의 구조를 눈으로 확인하고, 도형·반복문을 익히는 예제로 삼기 위해서입니다.

마치며

응용 예제의 코드는 다음 강좌부터 하나씩 설명드립니다.