티스토리 뷰
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
- 참조
- 사용자 정의 함수
- EnableCancelKey
- function함수 예외
- comment.text
- ProtectStructure
- 개체
- Option Compare Text
- inputbox
- Excel
- for each
- Application.InputBox
- Function Procesure
- WorkSheet Sort
- 함수 재계산
- 프로시저 호출
- 원본 데이터
- bubble sort
- 워크시트 함수 재계산
- 사용자 정의 함수 사용 예
- 강제 재계산
- 사용자 정의 함수 재계산
- 함수 프로시저
- 적용 범위
- 차트 레이블 추가
- 차트 서식변경
- 배열
- Screenupdating
- 프로시저 작성 실전
- 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 |