Excel 2007에서 사전작업
1. Microsoft Office 단추 를 클릭한 다음 Excel 옵션을 클릭
2. 기본설정에서 리본 메뉴에 개발 도구 탭 표시 확인란을 선택
3. 메뉴중 개발도구 추가된 것 확인
개발도구> 매크로보안> 매크로 설정.
Excel 2007 버전부터는 파일의 확장자 끝에 'x'(XML을 의미)가 하나 더 붙습니다.
즉 Test.xlsx와 같은 형태로 저장됩니다.
만약 파일에 매크로나 VBA 코드가 포함되어 있는 경우에는
'Excel 매크로 사용 통합 문서' 즉 파일이름.xlsm의 형태로 저장해야 합니다.
Excel 2003의 경우, 하나의 시트에사 사용 가능한 셀의 수는 16,777,216개 (65,536행 X 256열)였습니다. Excel 2007 버전에서는 이것이 대폭 늘어나서 17,179,869,184개 (1,048,576행 X 16,384열)의 셀을 사용할 수 있습니다. 따라서 이전 버전에 비해 작업 공간이 1,024배 증가 하였습니다 (행 16배, 열 64배). 이 정도 공간이면 대용량의 데이터를 관리하기 위해 예전처럼 워크시트를 나누거나 VBA로 코딩을 하거나 할 필요는 없을 듯 합니다.
매크로 VBA
매크로를 실행 방법 3가지
1) 지정된 바로가기 키
2) 개발도구> 매크로 를 클릭> 실행시킬 매크로로 선택> [실행] 버튼 Click.
3) 매크로와 연결된 버튼 클릭
매크로를 만들기
1) 매크로 기록 : 내가 작업한 내용을 엑셀이 알아서 VBA 코드로 기록
2) 직접 VBA (Visual Basic for Applications ) code 입력
화면 및 용어 설명
*VBE창 (창)
프로젝트 탐색기 : Crtl+ R
속성창 : F4
코드입력창: F7
직접실행창: Crtl +G
*모드 - 디자인 모드 , 디버깅 모드, 런타임 모드변수
Application , 개체 (Object)
- 모든 것을 외우려하지말고, 매크로 기록기로 원하는 동작을 해보고 메서드와 속성을 확인해 본다.
- 도움말을 적극 활용
Application = Excel ...
Excel은 47개의 Object로 이루어져있다.
* Object
* Collection (컬렉션) : 같은 클래스의 집합체, 관련 개체 집단을 포함하는 개체
엑셀 계보도에서 오브젝트 뒤에 s가 붙은 것(예를 들면 Workbooks, Worksheets, Names, Windows,...)
여러 개가 모여서 하나의 큰 덩어리를 이루고 있는 집합체
컬렉션에서 개체의 위치는 컬렉션 내에서 변화가 생길 때마다 바뀔 수 있어
컬렉션 내에서 특정 개체의 위치는 변할 수 있습니다.
예) 셀 영역 A1:A100 이라는 영역이 있다면,
셀 하나하나가 개체가 될 수 있으므로 그 셀의 집단을 컬렉션이라 할 수 있다.
예) 유저폼에 작성한 텍스트 박스등 컨트롤 들의 집단도 될 수 있습니다.
Excel 개체 모델 참조 , Excel 2007 개발자 참조>참조 , 애플리케이션 오브젝트의 계보
Control
콘트롤은 앞에서 살펴본 단추모양이나 텍스트 박스 등을 가리키는 말입니다.
이러한 콘트롤은 윈도우 프로그램을 구성하는 기본이 되며, 엑셀에서는 이 콘트롤을 개체라는 개념으로 이해하면 됩니다.
개체는 통합 문서, 워크시트, 차트, 셀 영역과 같은 엑셀의 한 요소를 의미하는 것입니다.
1. Property(콘트롤에 대한 변수)
메쏘트처럼 각 콘트롤들은 자신에게만 적용될 수 있는 변수들이 별도로 마련되어 있는데, 이것을 속성이라고 합니다
읽기/쓰기가 가능한 속성
읽기 전용 속성
- Value 속성: 어떠한 개체가 가지고 있는 값을 읽어오거나 값을 할당(저장)하고자 할 경우에 사용
- Offset 속성: 지정한 범위부터 오프셋되는 범위를 나타내는 Range 개체를 반환 <읽기전용>
expression.Offset(RowOffset, ColumnOffset)
Ex) A1 셀로부터 행(Row) 방향으로 3, 열(Column) 방향으로 3 만큼 떨어진 셀을 구하려면
Range("A1").Offset(3,3) 이라고 합니다. --> D4 - Name 속성: 개체의 이름을 반환해 주거나 변경
- Count 속성: 지정된 개체의 개수 구하기
Ex) myCnt = Workbooks.Count - WorksheetFunction속성: 엑셀의 워크시트에서 사용하는 함수들을 VBA 에서도 사용할 수 있도록 제공
Application(Excel) 개체에 딸린 속성 ex) Application.WorksheetFunction.Max(rng) - Formula 속성: 셀에 수식 또는 값을 대입할 때 사용
(그러나 수식이 아닌 값을 대입할 경우는 보통 Value 속성을 이용) ex) 셀 영역 A1:A10의 합을 구하는 =SUM(A1:A10) 이란 수식을 A11 셀에 입력
Range("A11").Formula = "=SUM(A1:A10)"
ex) B1 셀에 A1 셀부터 데이터가 있는 A 열의 마지막 데이터가 있는 셀 까지 지정하여 SUM 함수를 입력
1) 중간에 빈 셀도 포함여 A 열의 맨 마지막 셀까지 계산
Range("B1").Formula = "=SUM(A1:A" & Range("A65536").End(xlUp).Row & ")"
A65536 셀에서 처음으로 유효한 데이터를 만나는 셀까지(빈 셀이 아닌 처음 셀) 이동하되 방향은 위로 이동하라
A65536 셀로부터 처음으로 빈 셀이 아닌 셀이 A100 셀 이라면 위 코드는 100 이라는 값을 되돌리게 되고
코드는 "=SUM(A1:A" & 100 & ")" ==> "=SUM(A1:A" & 100 & ")" ==>"=SUM(A1:A100)"
2) 간에 빈셀이 있는 것은 무시하고 현재 연속된 영역에 대해서만 계산
Range("B1").Formula = "=SUM(" & Range("A1").CurrentRegion.Address & ")"
다만 A 열과 연속된 B 열에 어떠한 값이 있다면 곤란하므로 Resize 속성을 이용하여 다음과 같이 수정합니다.
==> Range("B1").Formula = "=SUM(" & Range("A1").CurrentRegion.Resize(,1).Address & ")"
- FormulaArray 속성: Formula 속성과 마찬가지로 셀에 수식을 입력할 때 사용하지만
다만 다른 것은 수식을 배열 수식으로 수식을 입력하고자 할 경우에 사용
2. Mothed (콘트롤에 대한 함수)
콘트롤들은 매우 다양한 성격을 가지고 있서 이들의 기능이나 작동은 서로 다릅니다. 이러한 콘트롤들에는 이들을 제어할 수 있는 별도의 함수들이 내장되어 있는데, 이렇게 해당 콘트롤에 대해서만 호출하여 사용할 수 있는 함수들
주의: 절대적으로 사용하지 않으면 안될 경우를 제외하고는 Select , Activate, Goto(특히) 메서드는 사용안함.-
Select 메서드 : 개체( 셀 영역, 차트, 그리기 개체등) 를 선택하라.
ex) A1 셀을 선택하려면 Range("A1").Select
ex) A1:B1 셀을 선택하려면 Range("A1:B1").Select
-
Activate 메서드 : 개체를 활성화 하라
활성화란 편집 가능한 현재 셀 또는 현재 개체로 만든 다는 점에서 Select 와 틀립니다.
따라서 Activate 메서드는 유일한 하나의 개체만을 반환 한다는 것입니다.
-
Goto 메서드 : 범위를 선택, 선택한 통합 문서가 활성화되어 있지 않으면 활성화시킵니다.(속도때문에 잘 안씀)
-
Add 메서드 : 컬렉션(통합 문서, 시트, 차트등)에 개체를 추가하고자 할 경우에 사용
ex) Set NewWorkBook = Workbook.Add <-- Set 문을 이용하여 새 문서를 (빈 문서) 추가
Set NewWorkSheet = NewWorkbook.Sheets.Add <--Set 문을 이용하여 새문서에 시트를 하나 추가
-
Intersect 메서드 : 둘 이상의 범위에서 사각형 모양의 겹치는 부분을 나타내는 Range 개체를 반환.
expression.Intersect(Arg1, Arg2, ...)
-
ClearContents: 셀에 입력된 값/수식을 지움 (셀을 선택하고 키보드에서 Delete 키를 누른것과 동일한 효과)
ex) Sheet1의 셀 범위 A1:G37에 있는 수식을 지우는 예제
Worksheets("Sheet1").Range("A1:G37").ClearContents
ex) Chart1에서 차트 데이터를 지우는 예제
Charts("Chart1").ChartArea.ClearContents
-
Delete 메서드 : 셀 또는 개체를 삭제 (셀을 선택하고 편집 -> 삭제를 선택했을때와 동일한 효과)
ex) A1:A3 셀에 각각 1,2,3 이라는 값이 있다고 한다면할때 A2 셀이 삭제되고
결과는 A3 셀이 위로 한칸 당겨져 올라와 A2 셀의 값이 3이 되게 됩니다
Range("A2").Delete
3. Event : 콘트롤에 대한 사용자나, 환경에 대한 반응
- Click 이벤트 : 컨트롤을 마우스로 클릭했을 때 발생되는 이벤트
ex) Private Sub CommandButton1_Click() - Change 이벤트 : 컨트롤이 가지고 있는 값이 변경되었을 때 발생되는 이벤트.
ex) 텍스트 박스에서는 사용자가 키입력을 할 때,
콤보 박스나 리스트 박스에서는 사용자가 목록을 선택했을 때.
Private Sub TextBox1_Change()
주요 Object
1. 워크북 오브젝트(Workbook Object) = 엑셀 파일 (엑셀 통합 문서)
Excel.exe 파일을 클릭하는 순간 Book1.xls 라는 워크북 오브젝트가 생성
==> Excel.exe가 가지고 있는 Workbook Class에 의해 새로운 워크북 오브젝트가 생성되는 것
ex) 새로운 통합 문서가 하나 만들기
Workbooks.Add
ex) 새로 만들어진 통합 문서를 Temp.xls라는 이름으로 저장까지
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=Application.DefaultFilePath & "\Temp.xls"
2. 워크시트 오브젝트(Worksheet Object) = 워크시트 그 자체ex) 워크시트 삽입하기 Worksheets.Add
워크시트 삽입하기 (삽입 위치와 매수지정) Worksheets.Add after:=Worksheets(1), Count:=2
시트 선택하기 Worksheets("Sheet2").Activate
시트 선택하고 이름 바꾸기 Worksheets("Sheet2").Activate
ActiveSheet.Name = "MySheet"
시트 이동 / 복사하기 Worksheets("Sheet1").Move after:=Worksheets("Sheet3")
시트 삭제하기 Application.DisplayAlerts = False '확인박스 안나오도록
ActiveSheet.Delete
Application.DisplayAlerts = True3. 레인지 오브젝트(Range Object)
엑셀에 입력되는 대부분의 데이터들이 바로 Range 오브젝트에 보관
Range 오브젝트에 접근하는 방법
- 앞에 아무 것도 붙이지 않으면 현재 워크시트를 대상Range.Range 속성
Ex) 'Sheet1' 시트의 A1 셀에 '100' 이라는 값이 입력 Worksheet("Sheet1").Range("A1").Value=100
B3:E7 영역의 모든 행들에 'Test' 라는 문자열입력 Range("B3:E7").Select
Selection.Rows = "Test"
열B, 열C, 열D,열E까지 'Test' 라는 문자열입력 Columns("B:E").Value = "Test"
행3, 행4, 행5, 행6까지 'Test' 라는 문자열입력 Rows("3:6").Value = "Test"Range("B2:E3").Select
이미 선택된 상태에서 범위를 열전체로 확대 Selection.EntireColumn.Select
이미 선택된 상태에서 범위를 행전체로 확대 Selection.EntireRow.SelectRange.Cells 속성
Cells(행, 열)의 형식으로 표기 (Range 속성의 표현방법과는 반대 순서)
Cells 프로퍼티의 가장 큰 장점은 인수에 숫자값을 사용할 수 있다는 것입니다Ex)현재 시트의 B5 셀에 숫자 '100'을 입력합니다. Cells(5,2) = 100
Range속성과 함께 Range(Cells(3, 2), Cells(10, 5)).Select
B2:E9 영역 내에서 행 방향 3번째, 열 방향 2번째에 셀 Range("B2:E9").Cells(3, 2) = 100Range.Offset 속성
Ex) Sheet1에서 현재셀부터 오른쪽으로 3열, 아래로 4행 ActiveCell.Offset(rowOffset:=3, columnOffset:=4).ActivateApplication.Union 메서드를 사용하는 방법
CurrentRegion 속성: 특정한 셀에 인접해 있는 영역 (현재 영역을 나타내는 Range 개체를 반환)
현재 영역은 빈 행과 빈 열로 둘러 싸인 범위, 읽기 전용
(자기 자신을 둘러싸고 있는 인접한 바로 옆 셀이 빈 셀이 아니면 그 셀이 포함된다는 말)UsedRange 속성 : 떨어져 있는 영역을 포함하여 '워크시트 중에서 사용된 모든 영역'을 선택
*Worksheet 오브젝트의 속성 : 즉, Range("A1:E100").Select 와 같은 형태로는 사용할 수 없다
변수/상수, 배열
-
*데이터 형식: 보유할 수 있는 데이터의 종류를 결정하는 변수의 특성을 의미
Byte, Boolean, Integer, Long, Currency, Decimal, Single, Double, Date, String,
Object, Variant(기본값), 그리고 개체의 특정 형식 뿐만 아니라 사용자 정의 형식을 포함
* 배열
정적배열: 변수를 배열로 선언할 때 그 차원의 크기가 이미 정해진 배열
Ex) Dim MyArray(100) As Integer '숫자로 정확하게 그 크기가 결정
Dim MyArray1(10,20) As Single동적배열: 변수를 배열로 선언할 때, 그 차원의 크기가 모를경우 그 크기를 유동적으로 조정할 수 있는 배열
Ex) Dim MyArray() As Integer
* 상수 선업 방법
1) Const 상수명 As 데이터형식 = 값
자동으로 그 값에 따라 적당한 형식이 지정. (기본값은 Private)
(편리한 프로그램의 수정/유지보수가 편리, 프로그램의 이해가 용이하게하기 위해 사용
Const pi As Double = 3.141592654)
* 변수의 선언 방법
1) Dim 변수명 As 데이터형식
As 절을 사용하지 않으면 Variant 형식으로 지정
배열변수: Dim A(1 To 65536) As Integer ' A열모두
Dim myArray(1 To 65536, 1 To 256) As Integer
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 TypeDim MemberInfo As 회원정보
Dim 회원성명 As String7. 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 12. 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 SubDateValue 함수
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") ---> 2Mid 함수: 한 문자열에서 지정된 수의 문자를 포함하는 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/
'Tech > Office' 카테고리의 다른 글
추가 기능 파일(xla) (0) | 2012.11.11 |
---|---|
불규칙한 크기로 병합된 셀들에 연번호 매기기 (0) | 2012.05.11 |
Exceller (0) | 2012.01.02 |
다중조건-Vlookup,Match,Index,Sumproduct (0) | 2009.06.19 |
INDEX와 INDIRECT의 비교 (1) | 2009.05.30 |
찾기 함수 MATCH() INDEX() OFFSET() (1) | 2009.05.30 |