본문 바로가기

엑셀/VBA

VBA 프로그래밍을 위한 기본 사항 확인하기 II

반응형

프로그래밍을 하다 보면 변수를 많이 사용하게 됩니다. 변수는 값을 저장하는 공간이라 생각하시면 되는데 언제든지 변수를 불러들여 프로그램에서 사용할 수 있고 값 또한 변경하면서 사용할 수 있습니다. 그래서 VBA에서는 어떻게 변수를 사용해야 하는지 알아보고자 합니다.

 

1. 프로시저에 변수 사용하기

 엑셀 파일을 열고 Visual Basic Editor를 실행시킵니다. 변수를 사용하기 위해 옵션 사항을 확인합니다.

 

도구_메뉴
[그림 1] 도구 메뉴

[그림 1]을 참조하여 도구-옵션을 클릭합니다.

 

VBA 프로그래밍을 위한 기본 사항 확인하기 I

 

VBA 프로그래밍을 위한 기본 사항 확인하기 I

VBA에 대해 여러 가지 글을 쓰다가 기본 사항들을 집고 넘어가는 것이 좋을 것 같아서 VBA 프로그래밍 기본 사항들을 확인해보고자 합니다. 매크로를 기록해보면 자동으로 입력되는 Sub 프로시저

mr-johndoe.tistory.com

 

 

 

 

 

옵션_창
[그림 2] 옵션 창

[그림 2]와 같은 옵션 창이 화면에 출력됩니다. 편집기 탭을 보시면 빨간색 사각형으로 표시한 부분에 v체크가 되어 있지 않습니다. v체크를 해줍니다. 그리고 확인 버튼을 클릭합니다.

 

이제 메뉴에서 삽입-모듈을 클릭하여 모듈을 만들어 줍니다. 그런데 이전에 만들었을 때와는 달리 모듈에 'Option Explicit'라는 문구가 쓰여 있습니다. ([그림 3] 참조)

 

모듈_코드창
[그림 3] 모듈 코드창

이는 옵션에서 '변수 선언 요구' 항목에 v체크 표시함으로 생긴 것입니다. 이제부터 모듈에서는 변수를 사용하려면 변수를 먼저 선언을 하고 사용해야 하며 반드시 변수를 선언해서 사용해야 합니다. 변수를 선언하지 않고 프로그래밍을 마치고 실행을 하게 되면 오류가 발생합니다.

변수를 선언할 때는 Dim을 사용합니다.

 

변수_선언_계산_프로시저_작성
[그림 4] 변수 선언 및 계산 프로시저 작성

[그림 4]와 같이 변수 선언을 하고 Sub 프로시저를 작성하였습니다.

Option Explicit에는 실수형 변수 r을 선언하였습니다. ( Dim r As Double )

그리고, Sub 프로시저에는 원의 면적을 구하는 내용을 작성하였습니다. 그러면서, 계산된 면적 값을 저장하기 위해 a라는 실수형 변수를 선언하였습니다.

r값은 엑셀 Sheet1 시트의 B2 셀에 나타내고, a값은 엑셀 Sheet1 시트의 C2 셀에 나타내도록 하였습니다.

이제 VBA 프로그래밍을 실행(단축키 F5) 해 보면 B2 셀에는 '2'가 C2 셀에는 '12.56'이 나타나는 것을 보실 수 있습니다.

 

2. 메시지 창 사용하기

 프로그램 사용 중 메시지 창을 띄워 사용자에게 변경 사항이나 선택 사항을 알려주는 경우가 있습니다. 메시지 창을 띄우기 위해서는 MsgBox를 사용합니다.

 

우선 MsgBox에 대해서 알아보겠습니다. 사용 방법은 아래와 같습니다.

 

  MsgBox ( Prompt, Buttons, Title )

 

Prompt : 메시지 창이 떴을 때 전달하고자 하는 내용을 입력합니다.

Buttons : 메시지 창에 표시될 버튼의 종류를 입력합니다.

Title     : 메시지 창 제목을 입력합니다.

 

 

 

MsgBox를 이용하여 간단한 메시지 창을 띄워보겠습니다.

엑셀 메뉴에서 개발도구-Visual Basic을 클릭하여 VBE를 엽니다.

VBE 창에서 삽입-모듈을 클릭하여 모듈을 생성합니다. 생성한 모듈의 코딩 창에 [그림 5]와 같이 입력합니다.

 

MsgBox_코딩_내용
[그림 5] MsgBox 코딩

 

MsgBox의 Prompt는 '안녕하세요. 만나서 반갑습니다.'를 입력하였고, Buttons는 vbOKOnly를 입력하였습니다. vbOKOnly는 OK 버튼 하나만 메시지 창에 출력됩니다. Title은 'Hello'를 입력하였습니다.

 

이제 VBA를 실행시키면 [그림 6]과 같은 창이 엑셀 파일에 뜹니다.

 

MsgBox_실행_결과
[그림 6] MsgBox 코딩 실행 결과

 

버튼 입력 시 자동으로 버튼 메뉴가 출력됩니다. 버튼 인수들을 정리하면 다음과 같습니다.

 

종류 인수 설명
버튼종류 vbOKOnly 0 [확인]버튼만 표시
vbOKCancel 1 [확인],[취소] 버튼 표시
vbAbortRetryIgnore 2 [중단], [다시 시도], [무시] 버튼 표시
vbYesNoCancel 3 [예], [아니오], [취소] 버튼 표시
vbYesNo 4 [예], [아니오] 버튼 표시
vbRetryCancel 5 [다시 시도], [취소] 버튼 표시
아이콘 모양 vbCritical 16
중요_메시지_아이콘
  아이콘 표시
vbQuestion 32
질의_경고_아이콘
  아이콘 표시
vbExclamation 48
메시지_경고_아이콘
  아이콘 표시
vbInformation 64
메시지_정보_아이콘
  아이콘 표시
기본 버튼 설정 vbDefaultButton1 0 첫 번째 버튼을 기본으로 선택
vbDefaultButton2 256 두 번째 버튼을 기본으로 선택
vbDefaultButton3 512 세 번째 버튼을 기본으로 선택
vbDefaultButton4 768 네 번째 버튼을 기본으로 선택

또한, 버튼이 클릭됐을 때 반환되는 값은 아래 표와 같습니다.

 

선택 버튼 반환값 반환 상수값
확인 vbOK 1
취소 vbCancel 2
중단 vbAbort 3
다시 시도 vbRetry 4
무시 vbIgnore 5
vbYes 6
아니오 vbNo 7

[그림 6]에서 확인 버튼을 클릭하면 반환 값은 'vbOK'이며 상수값으로 '1'을 반환합니다. VBA 프로그래밍을 하면서 버튼의 반환 값으로 표의 반환 값을 쓸 수 있으며 반환 상수값을 사용하여도 동일한 결과를 나타냅니다.

 

반응형