1. 변수 선언 및 데이터 형식
1) 변수 및 상수
○ 변수 : 프로그램 실행 중 변하는 값을 저장할 수 있는 컴퓨터의 메모리 공간
○ 상수 : 변수처럼 변하는 값이 아닌 항상 같은 값을 저장하는 공간
2) 변수(상수) 선언
○ 변수나 상수를 사용하려면 미리 코딩 창의 Sub Procedure나 모듈 상단에 사용할 변수나 상수를 선언해 놓아야 함
○ 선언 형식
키워드 변수(상수)명 As 데이터 형식
- 키워드 : Dim, Public, Private 등으로 지정 가능
- 변수(상수명) : 첫 문자는 반드시 영어 또는 한글(공백, 마침표, !, @, &, $, #, % 특수문자 사용불가)
- 데이터 형식 : 생략 시, 모든 형식의 데이터를 저장할 수 있는 Variant 데이터 형식이 자동으로 지정
3) 변수 선언에 필요한 키워드
① Dim
- Dim은 변수를 프로시저 내부나 모듈부에 선언 가능
- 선언된 위치에 따라 해당 변수를 사용할 수 있는 범위가 달라짐
② Private, Public
- 모듈부에만 선언 가능
- Private : 해당 모듈의 전체 프로시저에서 사용 가능하나, 다른 모듈에서는 사용불가
- Public : 전체 모듈의 모든 프로시저에서 사용 가능
※ 다양한 데이터 형식의 의미
데이터 형식 |
크기 (Byte) |
범위 |
논리 | Boolean |
2 |
TRUE, False |
숫자 | Byte |
1 |
0~255 |
Integer |
2 |
-32,768~32,767 |
Long |
4 |
-2,147,438,648~2,147,438,648 |
Currency | 8 | -922,337,203,685,477.5808~922,337,203,685,477.5808 |
Decimal | 12 | +/-79,228,162,514,264,337,593,543,950,335 (소수점 이하가 없는 경우) +/-7.9228162514264337593543950335 (소수점 아래 28자리) +/-0.0000000000000000000000000001(0이하 가장 작은 수) |
Single | 4 | -3.402823E38~-1.401298E-45(음수의 경우) 1.401298E-45~3.402823E38(양수의 경우) |
Double | 8 | -1.79769313486232E308~-4.94065645841247E-324(음수) 4.94065645841247E-324~1.79769313486232E308(양수) |
날짜 | Date | 8 | 100년 1월 1일 ~ 9999년 12월 31일 |
문자 | String(가변 길이) |
10 |
0 ~ 20억 개 |
String(고정 길이) |
문자열 길이 |
1~65536개 |
개체 | Object |
4 |
|
모두 | Variant(문자열) |
22 |
String(가변 길이) 데이터 형식과 동일 |
Variant(숫자) |
16 |
Double 형 범위 내의 모든 숫자 |
※ 변수 선언 예
Dim i As Integer |
‘i’라는 이름의 정수를 저장하는 변수 선언 |
Private 계약일 As Date |
해당 모듈의 모든 프로시저에서 사용할 수 있는 ‘계약일’ 이라는 이름의 날짜를 저장하는 변수 선언 |
Public 매출액 As Double |
모든 모듈의 프로시저에서 사용할 수 있는 ‘매출액’이라는 이름의 숫자를 저장하는 변수 선언 |
Const 할인율 As Single |
‘할인율’ 이라는 이름의 숫자를 저장하는 상수 선언 |
Dim 교통비 |
Dim 교통비 As Variant 와 같은 의미로 모든 데이터 형식을 저장할 수 있는 ‘교통비’라는 이름의 변수 선언 |
4) 변수와 상수에 값 할당
① 변수 값 할당 형식
변수 명 = 할당할 값
▷ 예시
Dim i AS Integer
i =1
i = Activesheet.Range(“A1”).Value
② 상수 값 할당 형식
Const 상수 명 AS Single = 할당할 값
5) 개체 변수
○ 변수에 값이 아닌 개체(셀 범위, 워크시트, 차트 등)를 할당
① 개체 변수 값 할당 형식
Dim 변수명 As 개체
Set 변수명 = 개체
▷ 예시(1)
Dim 매출실적 As Range
Set 매출실적 = Activesheet.Range(“A1:E50”)
▷ 예시(2)
Dim Sh1 As Worksheet
Set Sh1 =Worksheets(“실적관리”)
6) 변수의 수명
○ 프로시저 실행 시작 → 초기화, 프로시저 종료 → 값을 상실함
○ Static 키워드 : 프로시저를 실행해도 변수 값이 초기화되지 않음
7) 시스템 상수 (내장 상수)
○ 사용자가 선언하여 사용하는 상수 이외에 VBA와 엑셀에 미리 정의되어 있는 상수
○ VBA 상수 : 상수 앞에 ‘vb', 엑셀 개체 상수 :‘xl’가 표시됨
▷ 예) VBA에서 파랑색 사용 : vbBlue, 왼쪽 맞춤 지정 : xlLeft
① Msgbox의 구성 인수
▷ Prompt : 메시지 박스에 표시할 메시지입력
▷ Button Type : 메시지 박스에 표시할 버튼의 종류
▷ Title : 메시지 박스의 제목 표시줄에 표시할 텍스트
▷ Help File : 도움말 단추를 누를 때 표시할 도움말 파일 세부주소를 명시하는 곳
▷ Context : 도움말 파일의 연결할 항목 내용 번호
② Button Type 에 사용되는 상수 값
2. 조건문
1) 조건문 이란?
○ 지정한 조건에 만족할 때와 그렇지 않을 때, 반환하는 결과를 다르게 설정할 때 사용하는 명령문
예) 조건 : [지역] = ‘서울’
참 : 교통비 ‘5만원’ 지급
거짓 : 교통비 ‘10만원’ 지급
① IF문
▷ IF 문은 가장 기본적인 조건문으로 가장 많이 사용되며, 3가지 형식으로 사용 가능
가. 조건이 만족할 때만 실행
IF 조건식 Then
조건식을 판단한 결과가 TRUE일 때 실행할 실행문
End If
예) 평균이 80 이상이면 ‘합격’ 출력
Sub 합격여부1() Sheet("조건문1").Select If Range("e4").Valye >= 80 Then Range("f4").Value = "합격" End If End Sub |
나. 조건에 만족할 때와 조건에 만족하지 않을 때 다르게 실행
IF 조건식 Then
조건식을 판단한 결과가 TRUE일 때 실행할 실행문
Else
조건식을 판단한 결과가 FALSE일 때 실행할 실행문
End If
예) 평균이 80 이상이면 ‘합격’ 그렇지 않으면 '불합격' 출력
Sub 합격여부2() Sheet("조건문1").Select If Range("e4").Valye >= 80 Then Range("f4").Value = "합격" Else Range("f4").Value = "불합격" End If End Sub |
다. 2개 이상의 조건을 판단하여 각 조건의 판단 결과에 따라 다른 결과를 실행
IF 조건식1 Then
조건식1의 판단 결과가 TRUE일 때 실행할 실행문
ElseIf 조건식2 Then
조건식2의 판단 결과가 TRUE일 때 실행할 실행문
[ElseIf 문 조건식 만큼 반복]
Else
지정한 조건식 모두를 만족하지 않았을 때 실행할 실행문
End If
예) 평균이 90 이상이면 ‘A’, 80점 이상이면, ‘B’, 70점 이상이면, ‘C’, 60점 이상이면, ‘D’, 나머지는 ‘F’ 표시
Sub 학점1() Sheet("조건문1").Select If Range("e4").Valye >=90 Then Range("g4").Value = "A" ElseIf Range("e4").Valye >=80 Then Range("g4").Value = "B" ElseIf Range("e4").Valye >=70 Then Range("g4").Value = "C" ElseIf Range("e4").Valye >=60 Then Range("g4").Value = "D" Else Range("g4").Value = "F" End If End Sub |
※ IF 문의 조건 연산자
○ IF 문에서 조건식을 지정할 때 And, Or, Not 연산자를 사용 가능하다.
▷ AND : 지정한 조건을 모두 만족하는 경우를 판단함
▷ OR : 지정한 조건 중, 하나만 만족해도 되는 경우를 판단함
▷ NOT : 지정한 조건 아닌 경우를 판단함
② Select Case문
▷ 조건의 판단 결과에 따라 다른 동작을 수행하는 조건문
▷ 여러 개의 조건을 처리해야 하는 경우 더 적합함
가. Select Case 문의 형식
Select Case 식 (또는 변수)
Case조건1
조건1이 만족할 때 실행할 실행문
Case조건2
조건2가 만족할 때 실행할 실행문
Case조건3
조건3이 만족할 때 실행할 실행문
[Case 조건 반복]
Case Else
지정한 조건이 모두 만족하지 않았을 때 실행할 실행문
End Select
예) 평균이 90 이상이면 ‘A’, 80점 이상이면, ‘B’, 70점 이상이면, ‘C’, 60점 이상이면, ‘D’, 나머지는 ‘F’ 표시
Sub 학점2() Sheet("조건문2").Select Select Case Range("e4") Case Is >= 90 Range("g4") = "A" Case Is >= 80 Range("g4") = "B" Case Is >= 70 Range("g4") = "C" Case Is >= 60 Range("g4") = "D" Case Else Range("g4") = "F" End Select End Sub |
나. 조건을 지정하는 다양한 방법
▶ 숫자 값의 범위를 조건으로 지정하는 경우
- To 키워드를 사용
Select Case Range(“A1”).Value
Case 1 To 10
Msgbox “1~10 사이 값입니다.”
Case11 To 20
Msgbox “11~20 사이 값입니다.”
CaseElse
Msgbox “0~20 이외의 값입니다.”
End Select
▶ OR 조건을 지정하는 경우
- 조건에 쉼표(,) 사용
Select Case Range(“A1”).Value
Case 1, 3, 5
Msgbox “1, 3, 5 중 하나의 값입니다.”
Case 2, 4, 6
Msgbox “2, 4, 6 중 하나의 값입니다.”
Case Else
Msgbox “1,2,3,4,5,6 이외의 값입니다.”
End Select
▶ 비교 연산자를 사용하는 경우
- 연산자 앞에 Is 사용
Select Case Range(“A1”).Value
Case Is >10
Msgbox “10보다 큰 값입니다.”
Case Is <30
Msgbox “30보다 작은 값입니다.”
Case Else
End Select
3. 반복문
1) 반복문이란?
○ 작성한 코드를 반복해서 실행할 때 사용하는 명령문
예) 합격 여부를 마지막 영역까지 반복 출력하고자 할 때
① For Next 문
▷ 지정한 횟수만큼 코드를 반복해서 실행하고자 할 때 사용
For 카운터변수 = 시작수 To 끝수 [Step 증감값]
반복해서 실행할 실행문
Next [카운터변수]
예) 평균이 80 이상이면 ‘합격’, 그렇지 않으면 ‘불합격’
<코드1> <코드2>
Sub 합격여부1() 'For Next 문 Dim i As Integer
Sheet("반복문1").Select For i = 4 To 13 Step 1 If Range("e" & i).Value >= 80 Then Range("f" & i).Value = "합격" Range("e" & i).Font.Color = vbBlue Else Range("f" & i).Value = "불합격" Range("e" & i).Font.Color = vbRed Enf If Next i End Sub |
|
Sub 합격여부1_1() 'For Next 문 Dim i As Integer Dim rCnt As Integer
rCnt = Range("b4").CurrentRegion.Rows.Count +2 Sheet("반복문1").Select For i = 4 To rCnt If Range("e" & i).Value >= 80 Then Range("f" & i).Value = "합격" Range("e" & i).Font.Color = vbBlue Else Range("f" & i).Value = "불합격" Range("e" & i).Font.Color = vbRed Enf If Next i End Sub |
② For Each Next문
▷ 셀 영역,워크시트, 여러 통합 문서처럼 개체들의 집합(컬렉션)의 개별 요소에 대한 반복 작업을 실행 해야 할 때 사용(예 : 워크시트를 반복하면서 각 시트명을 셀에 입력하는 경우, 선택한 범위의 각 셀을 순환하면서 원하는 셀 서식을 지정하는 경우)
For Each 개체 변수 In 컬렉션
실행문
Next
③ Do Loop 문
▷ Do While Loop : 지정한 조건이 만족하는 동안 실행문을 반복
▷ Do Until Loop : 지정한 조건이 만족할 때까지 실행문을 반복
Do While 조건식
실행문
Loop