«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

매일 채워가는 꽃바구니

VBA #3. 기본 코딩 본문

VBA Excel

VBA #3. 기본 코딩

Mr.Flower 2009. 7. 29. 16:25

코딩은 왕도가 없다. 한 줄 한 줄씩 이해해 나가면서 다음번에는 그 구문을 응용해나가는 방식을 추천한다.
Visual Basic(이하 VB)에서는 이러한 코딩을 한 단계 쉽게 만들어 준다. 바로 [구성원 자동 목록] 이라는 기능이다. 사용법과 설정법은 화면을 통해 차근차근 배워보도록 하자.


VBE에 코딩을 위해 선택해야할 사항이 있다.
매크로로 실행할 것인가? 함수로 실행할 것인가?
매크로는 또 다시 워크시트에 적용을 통해 Passive한 코딩을 할 것인가? 버튼을 이용한 Active한 코딩을 할 것인가?


함수식 코딩을 해보도록 한다.
VBE를 실행시키도록 하자.


1. [삽입] - [모듈] 메뉴를 이용해서 Module1을 추가하자.
2. 추가된 Module1을 더블클릭하자.

3. 오른쪽 코드창이 열리면 아래와 같이 작성하자.


4. VBE창을 종료하고 엑셀로 돌아간다.
   1) Alt + Q
   2) [파일] - [닫고 MS Excel로 돌아간다]
   3) Alt + F11 (단, VBE창을 종료하지않고 엑셀로 전환)
  
5. C열에 숫자데이터 (60점~100점사이의 값으로)를 넉넉히 작성한다. (예, C1~C10까지 60, 65, 70, 75 식으로)

6. 숫자가 적힌 행의 D열을 선택하고 [삽입] - [함수]를 선택한다. (혹은, 수식 입력줄 앞의 fx버튼을 클릭한다.)

7. 함수마법사 창에서 [범주 선택] - [사용자 정의]를 선택하고 아래 목록에서 [합불판정] 함수를 선택하고, 범위를 C열의 데이터를 클릭해준다.

8. 작성되 있는 수치데이터 부분까지 채우기 핸들을 이용해서 수식을 채워준다.




◆ 코드부분을 확인해보자.
 Public Function 합불판정(ByVal rng As Range)
     If rng >= 90 Then
          합불판정 = "합격"
     Else
          합불판정 = "불합격"
     End If
End Function

첫 번째 줄을 작성하면 제일 마지막 줄은 자동으로 작성이 된다.


- Public Function 합불판정()
함수를 만들겠다고 선언을 하는 부분이다.
함수명은 합불판정이고, () 안에는 그 함수에 의해 계산될 인수들을 설정해준다.
ByVal은 Call By Value를 의미한다. 상대적인 개념으로 Call By Reference가 있다. 한번쯤 검색해서 자세히 공부하기 바란다.
Call By Value는 말 그대로, 값을 얻어와서 그 값만을 사용하겠다는 의미이고, Call By Reference는 참조할 주소를 가져와서 그 값을 엮어 사용하겠다는 의미이다. (어렵나?)


- (ByVal rng As Range)
함수에서 사용할 변수의 이름은 rng 이며 rng 변수의 형태는 셀범위를 가리킨다. 라고 정의를 한 부분이다. 그리고 ByVal에 의해서 그 셀에 값만을 이용한다는 것이 된다.
일단 머릿속으로 그림을 그려보면 C1을 클릭했다고 가정하자. C1에 있는 값을 ByVal에 의해서 가지고 온다. 그 값을 가지고 함수 내의 연산을 수행하게 된다는 것이다.


- If rng >=90 then
        합불판정 = "합격"
   else
        합불판정 = "불합격"
   End If

rng 값을 90과 비교한다. 흔히들 알고 있는 엑셀 자체의 IF문과 큰 차이는 없다. 좀더 코딩적으로 들어가기 때문에 끊고 맺음이 확실해야 한다는 것이 코딩의 주의점이라고 하면 주의점이다.

IF 조건 Then "참의 실행" Else "거짓의 실행" End IF
별도의 함수 내용 설명은 불필요 할 듯 싶다.


가장 기본적인 VBE의 형태인 사용자정의 함수식 VBE를 통해 코딩을 맛만 살짝(!?)봤다.
이는 컴퓨터활용능력이라는 자격증 1급의 함수문제의 마지막 문제 출제 형식이며,
엑셀 내에서 자주 사용되는 Choose문을 이용한 Select, Case문과 Weekday를 이용한 Weekday, Select, Case문 그리고 중복 IF문 등 다양한 형태가 출제된다.

다음 글에는 매크로를 이용해서 VBE를 확인하는 방법을 확인해보도록 하자.


'VBA Excel' 카테고리의 다른 글

VBA이용 시트간 자료 비교  (0) 2009.07.31
VBA 질문  (0) 2009.07.31
VBA #2. 엑셀과 VB?  (0) 2009.07.29
VBA #1. 시작하기  (0) 2009.07.29
잘못입력되는 것을 방지하는 셀 표시기능  (0) 2009.07.17