티스토리 뷰
VBA 언어의 구성 요소와 문법

※ 명령문 한줄에 입력 시 : (콜론) 이용
For i = 1 to 100 : Total = Total + i : Next i
■ 주석
( ' )작은 따옴표 이용
용도 : 설명을 달고자 할 때 / 코드 테스트에서 주석처리하여 코드 실행 해제 할 때
※ "문자열안의 작은 따옴표" : 큰따옴표 안의 작은따옴표는 문자열의 일부분으로 본다.
Txt = "Can't find."
■ 변수
※ 변수 작명 원칙
- 대소문자를 구분하지 않는다.
: 변수 선언 시 이름이 이후 코딩 때 바로 적용됨 (대소문자를 구분하는 것처럼 보임)
쉽게 알아 볼 수 있도록 대소문자를 혼합하여 작명한다.
Dim DataEntry as Currency
- 첫글자는 영문자(한글)로 시작하고 숫자, _(언더바) 조합 가능
- 특수문자는 사용 불가
- 공백, .(마침표) 사용 불가
※ Dim i, j, k as Integer 선언하면 k만 Integer자료형이되고 나머지는 모두 Variant자료형이다.

▶변수 적용 범위
지역변수(Dim) : 현 프로시저 내
모듈수준변수(Dim | Private) : 현 모듈 내
전역변수(Public) : 프로젝트 내 , 표준 모듈에서만 선언 가능
정적변수(Static) : 프로시저가 종료해도 값 유지
## 모든 변수는 프로시저 내에서 End명령을 사용하면 재설정된다.
ActiveSheet.PageSetup.Orientation = xlLandscape ' 2
■ 개체 변수
범위, 워크시트 등을 참조하는 변수 선언 가능
객체 변수가 개체를 참조하려면 Set 키워드 사용
[이점] .(dot)의 숫자가 줄어 들어 처리 속도가 빨라지며, 코드가 간결해진다.
=> With ~ End With 도 같은 기능
Dim MyRange as Range
Set MyRange = ActiveSheet.Range("A1:E10")
■ 상수
Const Rate as Double = 2.43
Public Const Rate as Double = 2.43 ' 전역 상수
※ 내장 상수 : VBA에 이미 선언된 상수 - 상수명, 값을 바로 사용 가능
■ 자료형

- 워크시트에서 수식계산은 Double 자료형 사용
- 정수 계산에는 integer자료형 사용하라
- 워크시트의 행을 다룰 때는 long자료형 사용하라
- 지료형을 지정하지 않고 코드 작성하면 Variant 자료형으로 처리된다.
- 변수 선언시 자료형 지정 습관을 들이는게 중요(에러처리에 더 유용/ 처리속도 더 빨라짐)
Optin Explicit : 도구>옵션>편집기>[변수선언요구] 체크
- 문자열 + 문자열 = 문자열 & 문자열 : "123" + "123" => "123123"
■ 사용자 정의 자료형
[Public | Private] Type ~ End Type문 이용
모듈의 첫번째 프로시저 앞에 선언
| Type CustomerInfo Company As String Contact As String RegionCode As Long Sales As Double End Type Sub 고객정보() Dim Customer As CustomerInfo Dim Customer2 As CustomerInfo With Customer .Company = "LG" .Contact = "010-111-1111" .RegionCode = "1234" .Sales = "50000000" End With Debug.Print (Customer.Company) Debug.Print (Customer.Sales) Customer2 = Customer End Sub |
▶ Data Type 확인 함수 : TypeName(변수명)
| Sub VariantDemo3() MyVar = True MsgBox TypeName(MyVar) MyVar = MyVar * 100 MsgBox TypeName(MyVar) MyVar = MyVar / 4 MsgBox TypeName(MyVar) MyVar ="Answer:" & MyVar MsgBox TypeName(MyVar) End Sub |
▶ Type conversion functions
o CBool(expression)
o CByte(expression)
o CCur(expression)
o CDate(expression)
o CDbl(expression)
o CDec(expression)
o CInt(expression)
o CLng(expression)
o CLngLng(expression) (Valid on 64-bit platforms only.)
o CLngPtr(expression)
o CSng(expression)
o CStr(expression)
o CVar(expression)
■ 문자열 변수
Dim Name As String * 20 ' 고정길이 문자열 (20자로 한정한 경우)
Dim Address As String ' 가변길이 문자열
■ 날짜 처리
#month/day/year#
Const FirstDay as Date = #1/1/2021#
ActiveSheet.Range("A1") = Date ' 금일 날짜
ActiveSheet.Range("A1") = DateSerial(2021,1,1) ' 엑셀 Date함수 기능
■ 연산자
https://docs.microsoft.com/ko-kr/office/vba/language/reference/user-interface-help/eqv-operator
산술연산자 : + - * / ^(거듭제곱) &(문자열 연결) \(나누기 몫) Mod(나누기 나머지)
+ : 문자열 연결 연산자로도 사용됨 ( result = "강아지" + "꼬리" )
비교연산자 : =(같다) <>(다르다) >(크다) <작다) >=(크거나같다) <= (작거나같다)
논리연산자 : Not And Or Xor(다르면 True) Eqv(Equivalence, 동일하면 True)
Imp( implication A: 1 B: 0 일때만 False)
| Function Test(연산자) Dim arr As Variant Dim r, j arr = Array(False, True) Debug.Print ("-----------------") Select Case LCase(연산자) Case "and" For Each r In arr For Each j In arr Debug.Print r And j Next j, r Case "or" For Each r In arr For Each j In arr Debug.Print r Or j Next j, r Case "xor" For Each r In arr For Each j In arr Debug.Print r Xor j Next j, r Case "not" For Each r In arr Debug.Print Not r Next r Case "eqv" For Each r In arr For Each j In arr Debug.Print r Eqv j Next j, r Case "imp" For Each r In arr For Each j In arr Debug.Print r Imp j Next j, r End Select End Function |
| Sub aaa() Test ("not") End Sub |
'VBA' 카테고리의 다른 글
| [Excel][VBA] 입출력 함수 (0) | 2021.11.22 |
|---|---|
| [Excel][VBA] VBA 내장 함수 / 워크시트 함수 (0) | 2021.11.21 |
| [Excel][VBA] 개체에 대한 개념과 배우는 방법 (0) | 2021.11.21 |
| [Excel][VBA] 병합된 셀 처리 (0) | 2021.11.20 |
| [Excel][VBA] Range개체 참조하기 (0) | 2021.11.20 |
- Total
- Today
- Yesterday
- 참조
- bubble sort
- ProtectStructure
- 사용자 정의 함수
- 적용 범위
- 차트 레이블 추가
- Option Compare Text
- 차트 서식변경
- Function Procesure
- Application.InputBox
- Excel
- 사용자 정의 함수 사용 예
- 배열
- WorkSheet Sort
- 함수 프로시저
- EnableCancelKey
- 워크시트 함수 재계산
- inputbox
- 함수 재계산
- 원본 데이터
- Screenupdating
- 프로시저 작성 실전
- 개체
- 프로시저 호출
- function함수 예외
- for each
- 강제 재계산
- 사용자 정의 함수 재계산
- comment.text
- vba
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |