****************************************************주요 Object ***************************************************
1. 워크북 오브젝트(Workbook Object) = 엑셀 파일 (엑셀 통합 문서)
Range("B2:E3").Select
이미 선택된 상태에서 범위를 열전체로 확대 Selection.EntireColumn.Select
이미 선택된 상태에서 범위를 행전체로 확대 Selection.EntireRow.Select
*Worksheet 오브젝트의 속성 : 즉, Range("A1:E100").Select 와 같은 형태로는 사용할 수 없다
2. ReDim 문
Private, Public 또는 Dim 문에 의해 이미 명시적으로 선언된 동적배열의 크기를 지정 혹은 재확정
ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .
3. Public 문
변수를 프로젝트 어느 곳에서든 사용하고자 할 경우에 사용합니다. (전역 변수, Global 문)
4. Private 문
변수를 지역으로 사용하고자 할 경우에 사용합니다. (지역 변수)
6. Static 문
프로시저 수준에서 선언된 모든 변수는 프로시저가 종료되면서 그 수명을 다하게 됩니다.
그러나 어떠한 목적에 의해서 프로시저가 종료되었으나 그 프로시저가 다시 호출 되었을 때
그 값을 유지하고 싶은 변수가 있다고 할 경우에 사용됩니다.
5. Type 문
하나 그 이상의 구성요소를 가지는 사용자가 정의하는 형식을 선언할 때 사용( 모듈 수준에서 선언)
예) Dim 회원성명 As String
Dim 전화번호 As String
Dim 주소 As String
Dim 가입일 As Date
==> Type 회원정보
회원성명 As String
전화번호 As String
주소 As String
가입일 As Date
End Type
Dim MemberInfo As 회원정보
Dim 회원성명 As String
7. Enum 문
특정 목적을 위한 그룹화된 변수들을 선언할 때 사용
(Enum 문으로 선언된 형식을 With 문 사용불가
Enum 문은 모듈 수준에서만 나타날 수 있다)
예) Enum myColor
cError = 3 ' 빨강색
cCaution = 5 ' 파랑색
cCanNotKeyIn = 15 ' 회색 25%
cKeyIn = -4142 ' 색상없음(셀의 기본 바탕색)
cHasNoData = 34 ' 연한 옥색
End Enum
8. Deftype 문 선언된 변수의 형식을 결정하고자 할 경우 사용( 각 형식을 지정할 문자는 대소문자를 구분안함.)
*변수의 수명
프로젝트 - 클래스 ( Procedure1, Procedure2, ....)
- 폼 ( Procedure1, Procedure2, ....)
- 모듈 ( Procedure1, Procedure2, ....)
******************************************** 연산자 ****************************************************
1. 산술 연산자
+ , -, *, / , ^ (지수승, POWER 함수와 동일), \ (몫, QUOTIENT 함수), Mod (나머지, MOD 함수)
2. 비교 연산자
<,<=, > >=, =, <>, Is (두개체가 가르키는 변수의 동등비교), Like (문자열비교- ? * # 등 사용)
3. 문자열 연결 연산자
&
4. 논리 연산자
And , Eqv, Imp, Not, Or, Xor
************************************************* 문 **********************************************
*문: 선언문 : 변수나 상수, 프로시저의 데이터 형식과 이름 정함
지정문 : 변수나 상수에 값이나 식을 지정
실행문 : 동작을 초기화하는 문. 메서드나 함수를 수행할 수 있고 코드 블록을 반복하거나 분기가능
* Set 문
변수에 개체를 참조하도록 할당하는 경우에 사용 (변수는 Object 형식으로 선언)
개체를 참조하도록 한다는 것은 지정된 개체가 가지고 있는 속성들의 값을 읽거나 쓰거나 할 수 있도록 한다는 것
Set 문은 보통 Workbook, Worksheet, Range 등 통합문서와 관련된 부분에 많이 사용(아래의 방법 말고도 많은 방법이 있다.)
1) "Book1.xls" 라는 문서를 참조
Dim myBook As Workbook
Set myBook = Workbooks("Book1.xls")
2) "Book1.xls" 파일의 "Sheet1" 이라는 이름을 가진 워크시트를 참조
Dim myBook As Workbook
Dim mySheet As WorkSheet
Set myBook = Workbooks("Book1.xls")
Set mySheet = myBook.Sheets("Sheet1")
또는
Dim mySheet As WorkSheet
Set mySheet = Workbooks("Book1.xls").Sheets("Sheet1")
3) " Book1.xls" 파일의 "Sheet1" 이라는 이름을 가진 워크시트의 "A1:A10" 영역을 참조
Dim myBook As Workbook
Dim mySheet As WorkSheet
Dim myRange As Range
Set myBook = Workbooks("Book1.xls")
Set mySheet = myBook.Sheets("Sheet1")
Set myRange = mySheet.Range("A1:A10")
또는
Dim myRange As Range
Set myRange = Workbooks("Book1.xls").Sheets("Sheet1").Range("A1:A10")
* On Error 문
1) On Error GoTo line
코드의 실행도중 오류가 발생하면 On_Error_Rtn 이라는 레이블이 있는 곳으로 이동
2) On Error Resume Next
코드의 실행도중 오류가 발생하면 오류를 무시하고 다음에 작성된 코드를 실행합니다.
3) On Error GoTo 0
모든 오류 처리를 중지하고 오류가 발생하면 디버그 창을 띄웁니다.
* 키워드 Option
1. Option Base 문
배열을 선언할 때 시작하는 값을 변경할때 사용 (기본값은 0)
Option Base 0 또는 Option Base 1
2. Option Compare 문
- Option Compare Binary
- Option Compare Text 문자를 비교하는 방법에서 대소문자를 구분할 것인가 아닌가 결정
- Option Compare Database 3. Option Expicit 문
거의 반드시 사용함.
모든 변수/상수는 반드시 명시적으로 선언되어야 한다. 그렇지 않으면 잘못된 변수/상수이다라는 의미
참고) 이 문이 사용되었다면 VBA 가 자동으로 오류를 나타냅니다.
4. Option Private 문
현재 프로젝트가 다른 프로젝트에서 참고하지 못하도록 합니다.
* 디스크에서의 작업과 관련된 문들
1. ChDrive 문 : 현재 드라이브를 변경합니다.
Ex) ChDrive "D" ' 현재 드라이브를 D: 드라이브로 변경합니다.
2. ChDir 문 : 현재 경로를 변경합니다.
Ex) ChDir "D:Temp" ' 현재 경로를 D:Temp 로 변경합니다.
참고) ChDir 문으로 현재 경로를 변경할 수 있습니다. 반대로 현재의 경로를 알 수 도 있습니다.
현재의 경로를 알려면 CurDir 함수를 이용합니다.
Dim myPath As String
myPath = CurDir("C") ' C: 드라이브에 설정되어 있는 현재 경로를 문자열로 반환합니다.
3. MkDir 문 : 새로운 경로를 생성합니다.
Ex) MkDir "D:Temp" ' D: 드라이브에 Temp 라는 이름의 경로를 생성합니다.
4. RmDir 문: 기존의 경로를 삭제합니다.
Ex) RmDir "D:Temp" ' D: 드라이브에 Temp 라는 이름의 경로를 삭제합니다.
삭제하려는 경로에 파일이 존재하면 오류가 발생합니다.
이러한 경우에는 Kill 문을 이용하여 먼저 해당 경로에 있는 모든 파일들을 완전히 삭제하세요.
5. Kill 문: 디스크에서 지정된 파일들을 삭제합니다.
Kill 문은 여러 파일을 지정하는 다중 문자 와일드카드(*) 문자와 단일 문자 와일드카드(?)의 사용을 지원합니다.
Ex) Kill "D:*.xls" ' D: 루트에 있는 파일들중 확장자가 xls 인 모든 파일을 삭제합니다.
Kill "D:Tempa.xls" ' D:Temp 폴더에서 a.xls 인 파일을 삭제합니다.
참고) Kill 문은 열려있는 파일을 삭제하려할 경우에는 오류가 발생합니다.
6. Name 문 : 파일 또는 경로의 이름을 변경합니다.
Ex) Name "C:TestmyFile.xls" As "C:TestmyTestFile.xls"
C:Test 폴더의 myFile.xls 파일을 myTestFile.xls 로 이름을 변경합니다.
Name 문을 이용하면 다른 경로로 이동도 가능합니다.
Ex) Name "C:SourceFoldermyFile.xls" As "C:TargetFoldermyTestFile.xls"
C:SourceFolder 폴더의 myFile.xls 파일을 C:TargetFolder 폴더로 이동하고 myTestFile.xls 로 이름을 변경합니다.
7. FileCopy 문: 파일을 복사합니다.
Ex) FileCopy "C:SourceFoldermyFile.xls" , "C:TargetFoldermyTestFile.xls"
C:SourceFolder 폴더의 myFile.xls 파일을 C:TargetFolder 폴더에 myTestFile.xls 라는 이름으로 복사합니다.
참고:열려있는 파일을 복사하면 오류가 발생합니다.
열려있는 파일을 복사하려면 API 를 이용하여 복사할 수 있습니다. 방법은 팁 게시판의 열려있는 파일의 복사를 참고.
***************************************제어문****************************************************
*반복문
1. Do ... Loop 문 : 조건에 만족할때까지 실행(실행할 횟수가 명확히 정해지지 않은 경우)
Do [{While | Until} 조건]
[statements]
[Exit Do]
[statements]
Loop
또는 다음과 같은 구문을 사용할 수도 있습니다.
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} 조건]
2. For ... Next 문 : 이미 실행할 횟수가 정해져 있을 때
For counter= start To end [Step step]
[statements]
[Exit For]
[statements]
Next [counter]
3. For Each ... Next 문 : 배열이나 컬렉션의 각 요소들에 대한 문의 그룹을 반복
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
4. While ... Wend 문
* 조건문, 분기처리문
1. IF 문
2. SELECT CASE 문
Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Selec
3. ON...GOSUB 문
4. ON...GOTO 문
5. GOSUB ... RETURN 문
6. GOTO 문
<cf. 분기문과 비슷한 효과를 내는 함수>
1. IIF 함수
2. SWITCH 함수
3. CHOOSE 함수
* 개체를 위한 특수 명령문
1. For each문
2. with 문
****************************************** 프로시저 *****************************************
2. 프로시저 작성 방법
1) Sub 문
2) Function 문
*Procedure : Sub Procedure : 일반적인 처리
Function Procedure: 함수. 어떠한 값을 입력하면 계산을 통하여 결과를 출력.
Property Procedure: 사용자가 속성을 만들거나 저장 ( 일반적으로 잘 사용안됨)
*사용자 정의 폼
1. 해당 문서 (마우스 오른클릭)> 삽입 > 사용자 정의 폼 or 메뉴의 삽입 > 사용자 정의 폼
2. 폼과 도구 상자가 나타남.
****************************************** 함수 ********************************
* 날짜 시간함수
1. Now 함수 : 현재 시스템의 날짜와 시간을 반환합니다.
2. Date 함수 : 현재 시스템의 날짜를 반환합니다.워크시트 함수의 Today 와 같습니다.
Sub Date_Time_Ex()
Dim Date_Time As Date
Date_Time = Now
MsgBox "년 : " & Year(Date_Time) & vbCr & _
"월 : " & Month(Date_Time) & vbCr & _
"일 : " & Day(Date_Time) & vbCr & _
"시 : " & Hour(Date_Time) & vbCr & _
"분 : " & Minute(Date_Time) & vbCr & _
"초 : " & Second(Date_Time)
End Sub
DateValue 함수
TimeValue 함수
Weekday 함수
MonthName 함수
WeekdayName 함수
DateSerial 함수: 지정된 년, 월, 일의 날짜 값을 반환합니다.
TimeSerial 함수 특정 시, 분, 초에 대한 시간을 나타내는 Variant (Date) 값을 반환 DateAdd 함수 : 특정 시간 간격을 더한 날짜 값을 반환 DateDiff 함수 : 두 날짜 사이의 시간 간격을 계산합니다. 결과는 Long 형식입니다
DatePart 함수 :주어진 날짜의 지정된 부분을 포함하는 Variant(Integer) 값을 반환
* 수학함수
1. Abs 함수 : 수의 절대값을 구합니다.
2. Int 함수 : 수를 가까운 정수로 내립니다. (음수인 경우에는 더 작은 숫자로 환산됨을 주의 ) 3. Fix 함수 : 숫자의 소수점 이하를 버리고 정수로 변환합니다.(TRUNC 함수와 동일)
4. Rnd 함수: 0보다 크거나 같고 1보다 작은 수의 난수를 발생. (RAND 함수와 동일)
5. Sgn 함수 : 숫자의 부호를 반환합니다.(음수이면 -1, 0 은 0을 양수이면 1을 반환합니다)
- 삼각 함수 Cos 함수 / Sin 함수 / Tan 함수
- 기타 함수 Exp 함수 / Log 함수 / Sqr 함수
*String관련함수
InStr 함수: 한 문자열 안에 특정 문자열이 처음으로 나타난 위치를 지정하는 Variant(Long) 값을 반환
ex) InStr("ABC", "B") ---> 2
Mid 함수: 한 문자열에서 지정된 수의 문자를 포함하는 Variant(String) 값을 반환합니다.
Left 함수: 문자열 왼쪽부터 지정된 수 만큼의 문자를 포함하는 Variant(
String) 값을 반환합니다.
Right 함수: 문자열의 오른쪽으로부터 지정된 수의 문자를 포함하는 Variant(
String) 값을 반환합니다.
**************************VBA 프로그래밍하는 순서********************************
① 마우스로 원하는 윈도우를 그린다. (콘트롤 작성)
② 버튼, 텍스트 박스등의 속성을 지정한다. (속성 지정)
③ 연계된 사건(Event)에 대한 코드를 작성한다. (코딩)
------------------------------------------------------------
참조
김형백 http://soongin.new21.net/
허성덕 http://uno21.com/
엑사모 http://www.excellove.com
i엑셀러 http://www.iexceller.com/