• 최초 작성일: 2000-05-18
  • 최종 수정일: 2026-09-30
  • 조회수: 9 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA코딩입문하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

이번 강좌부터 VBA에서 프로그래밍 하는 방법에 대해 본격적으로 알아보도록 하겠습니다. 들으시는, 아니 보시는 도중에 오브젝트나, 프로퍼티, 메서드 등의 개념이 자꾸 혼동되거나 하면 앞의 강좌로 돌아가서 다시 한번 훑어보고 오시기 바랍니다.

옆의 버튼을 누르세요.

이번 시간에는 위와 같이 간단한 프로그램을 짜 보도록 합니다. 아주 짧은 프로그램이라면 모르겠지만 어느 정도의 logic을 가진 프로그램이라면 직접 코딩을 하기 전에 많은 요소들을 미리 생각해 보아야 합니다. Flow도 생각해 보지 않고 바로 코딩에 들어가면 곧 헤매게 될 것입니다. 위와 같은 프로그램은 코딩에 조금만 익숙해지면 눈감고도 작성하겠지만 일단 우리는 처음 시작하는 것이니까 일단 프로그래밍의 순서를 생각해 보도록 하지요.

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

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

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


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

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

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

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

VBA코딩입문하기

핵심 요약: VBA 코딩 첫걸음

코딩 전에 변수 지정, 값 대입, 결과 표시의 순서를 생각하고, 주석과 InputBox로 읽기 쉽고 융통성 있는 프로그램을 만듭니다.

  • 1단계: Dim으로 변수를 지정합니다.
  • 2단계: 변수에 값을 대입하고 MsgBox로 결과를 표시합니다.
  • 3단계: 작은따옴표(')로 주석을 달아 코드를 읽기 쉽게 만듭니다.
  • 4단계: InputBox로 사용자에게 값을 입력받습니다.

Step 1: 프로그램의 순서 생각하기

먼저, 변수를 지정해야 겠지요. 변수를 지정해야 하는 이유에 대해서는 예전에 설명을 드렸고… 쉽게 말해서 연극에서 등장인물을 미리 생각해서 지정해 주는 것이라고 할 수가 있겠지요. (반드시 변수를 지정해야만 하는 것은 아닙니다만 제 경험에 의하면 이렇게 지정해 놓고 사용하는 것이 나중에 프로그램의 길이가 길어지고 복잡해질 경우 덜 헷갈리더군요. 머리속도 정리가 되고...)

그런 다음에, 각 등장인물(즉 변수)에 대해 어떤 역할을 부여해야 겠지요. 즉 변수의 고유값을 설정하고… 마지막으로, 각 변수값을 더한 다음 이것을 화면에 뿌려주면 되겠군요. 이런 과정을 코딩해 보면 아래와 같이 될 것입니다.

Step 2: 코드 입력하고 실행하기

"도구-매크로-Visual Basic Editor" 메뉴를 선택하여 VB 에디터를 띄운 상태에서 모듈시트를 하나 삽입하고 아래의 코드를 직접 입력해 보세요.(복사-붙여 넣기를 해도 되지만 직접 입력해 보는 것이 코드에 익숙해지는 지름길 이지요. 백견이 불여일打!!!)

참고: 최근 버전의 Excel에서는 "도구-매크로-Visual Basic Editor" 메뉴가 없습니다. Alt+F11을 누르거나, [개발 도구] 탭(보이지 않으면 리본 사용자 지정에서 체크)의 [Visual Basic]을 선택하면 VB Editor가 열립니다. 모듈은 VB Editor의 [삽입-모듈]로 추가합니다.

Sub 합계구하기()
    '변수 지정
    Dim X As Integer
    Dim Y As Integer
    Dim Z As Integer

    '변수값 대입
    X = 10
    Y = 5
    Z = 20
    '결과값 표시
    MsgBox "결과값은 " & X + Y + Z & " 입니다", , "//Exceller"
End Sub

잘 되지요? 위의 코드를 아래와 같이 바꿀 수도 있습니다.

Sub 합계구하기2()
    '변수 지정
    Dim X As Integer, Y As Integer, Z As Integer

    '변수값 대입
    X = 10: Y = 5: Z = 20
    '결과값 표시
    MsgBox "결과값은 " & X + Y + Z & " 입니다", , "//Exceller"
End Sub

기능적으로는 똑같은데 여러 라인을 한 라인으로 합쳤지요? 주의할 점! 코든 읽기가 쉬워야 합니다. 필요 이상으로 행을 축약해서 쓰면 나중에 보기가 쉽지 않습니다. 따라서 가급적이면 한라인에는 하나의 문장만을 쓰도록 하세요.

Step 3: 주석 사용하기

그리고 위에서 보면 초록색으로 표시된 글자가 있지요? 이것은 주석을 나타내는 표시로서 나중에 이 코드를 보았을 때 쉽게 알 수 있도록 해주며 VBA 코드를 실행할 때에는 제외됩니다.

주석임을 표시해 주는 방법은 아주 간단합니다. 아무 데서나 '(작은 따옴표)를 적고 그 뒤에 문장을 적어주면 작은 따옴표 뒤의 부분은 주석으로 간주됩니다. 주석문임을 표시하는 또 한가지 방법이 있는데 "Rem"을 사용 하는 것입니다.

즉 [Rem 변수 지정]과 ['변수 지정] 이 두 가지는 서로 같은 것이지요. 단, Rem文은 라인의 맨 처음에서만 사용을 할 수가 있습니다. 이것이 더 불편하지요? 그러므로 '(작은 따옴표)를 주로 사용합니다.

Step 4: InputBox로 값 입력받기

자, 이렇게 하면 프로그램은 잘 실행이 되는데 아직도 불편하기 짝이없지요? X, Y, Z라는 변수의 값이 항상 고정이 되어서 다른 계산은 할 수가 없습니다. 따라서 좀 융통성이 있는 형태로 만들어 볼까요? 다시 말해서 사용자가 임의의 변수값을 입력하면 그 값의 합계를 구하는 프로그램을 작성해 보자는 것입니다.

어떻게 하면 좋을까요? 사용자로부터 특정값을 받기 위해서는 InputBox()라는 메서드를 사용하면 됩니다.

Sub 합계구하기3()
    '변수 지정
    Dim X As Integer
    Dim Y As Integer
    Dim Z As Integer
    Dim strXYZ As String

    '변수값 대입
    X = InputBox("첫번째 값을 입력하세요", "//Exceller")
    Y = InputBox("두번째 값을 입력하세요", "//Exceller")
    Z = InputBox("세번째 값을 입력하세요", "//Exceller")

    '결과값 표시
    strXYZ = "첫번째 입력하신 값은 " & X & "이고," & vbCr
    strXYZ = strXYZ & "두번째 입력하신 값은 " & Y & "이며," & vbCr
    strXYZ = strXYZ & "세번째로 입력하신 값은 " & Z & "입니다." & vbCr & vbCr
    strXYZ = strXYZ & "따라서 결과값은 "
    MsgBox strXYZ & X + Y + Z & " 입니다", , "//Exceller"
End Sub

참고: 여기서 사용한 InputBox는 엄밀히는 VBA 함수이고, 엑셀에는 셀 범위 선택 등을 받을 수 있는 Application.InputBox 메서드도 따로 있습니다. 또한 InputBox의 결과를 Integer 변수에 바로 넣으면 [취소]를 누르거나 숫자가 아닌 값을 입력할 때 오류가 나므로, 실무에서는 입력값을 검사하는 코드를 함께 사용하시기 바랍니다.

이렇게 하면 사용자가 마음대로 숫자값을 입력할 수 있고 그에 따라 결과값도 연동이 되어 변하겠지요? 단 숫자 형식이 정수형(Integer) 이므로 -32,768 ~ 32,767 사이의 값을 넣어야지 그렇지 않으면 에러가 나지요. 만약 엄청 큰 숫자값도 받아들이게 하고 싶으면 Integer 대신에 Long이나 Single, Double 등의 형식으로 바꾸어 주면 됩니다.

마무리

다음 시간에…

정리 — VBA 코딩 입문 핵심 정리

구분 코드 역할
변수 지정 Dim X As Integer 정수형 변수 선언
값 대입 X = 10: Y = 5: Z = 20 한 줄에 여러 문장 (가급적 지양)
주석 '변수 지정 실행에서 제외되는 설명
값 입력 X = InputBox("첫번째 값을 입력하세요", "//Exceller") 사용자 입력 받기

자주 묻는 질문 (FAQ)

Q1. 주석은 어떻게 표시하나요?

작은따옴표(')를 쓰고 그 뒤에 문장을 적습니다. Rem을 쓸 수도 있지만 라인의 맨 처음에서만 사용할 수 있습니다.

Q2. Integer 변수에는 어느 범위의 값을 넣을 수 있나요?

-32,768 ~ 32,767 사이의 값입니다. 더 큰 값은 Long, Single, Double 형식을 사용합니다.

Q3. 한 줄에 여러 문장을 써도 되나요?

가능하지만 코드는 읽기 쉬워야 하므로 가급적 한 라인에 하나의 문장만 쓰는 것이 좋습니다.

마치며

프로그램은 코딩 전에 순서(Flow)를 먼저 생각해야 합니다. 직접 입력해 보는 것이 코드에 익숙해지는 지름길입니다.