Chapter 1 매크로란 무엇인가? 1. 매크로가 하는 일을 알아본다 ... 15 2. 매크로! 이렇게 하면 쉽게 마스터 한다 ... 16 3. 매크로의 탄생 배경을 알아보자 ... 17 4. 매크로의 편집 창을 알아보자 ... 19 비주얼베이직 에디터의 창을 열어보자 ... 19 [파일] ... 20 [편집] ... 20 [보기] ... 20 [삽입] ... 20 [형식] ... 20 [디버그] ... 20 [실행] ... 20 [도구] ... 21 Chapter 2 매크로 작성을 쉽게 하는 방법 1. 매크로 기록기의 생김새를 알아보자 ... 23 매크로 기록기를 실행시켜 보자 ... 24 매크로 이름(M) ... 24 바로 가기 키(K) ... 24 매크로 저장 위치(I) ... 25 설명(D) ... 25 [확인]과 [취소] ... 25 2. 워크시트에서 이루어지는 일을 매크로는 알고 있다? ... 26 셀을 선택하는 매크로 ... 26 매크로는 프로시저에 기록된다 ... 28 프로시저는 2가지 방법으로 만들 수 있다 ... 29 Range("A5").Select의 의미는? ... 30 합계 매크로 ... 31 자동 필터 매크로 ... 33 Chapter 3 매크로 구성 요소를 알아보자 1. 개체, 속성, 메서드, 이벤트 ... 37 클래스(Class)에 대해서 ... 39 개체(Object)에 대해서 ... 39 이벤트(Events)에 대해서 ... 39 2. 모듈과 프로서저에 대해서 ... 45 모듈이란 무엇인가? ... 45 모듈의 생성과 삭제 ... 45 코드는 프로시저에 작성된다 ... 46 프로시저의 선언 방법 ... 46 프로시저의 구성 요소 ... 48 범위의 키워드(선택 요소) ... 49 프로시저의 성격을 정하는 키워드(필수 요소) ... 49 프로시저의 인수에 대해서 ... 50 프로시저 선언 비교 요약 ... 54 3. 변수(Variable)와 상수(Constant)에 대해서 ... 55 변수란 무엇인가? ... 55 변수는 이름을 정해야 사용할 수 있다 ... 55 변수 선언 방법 ... 56 Static 변수 ... 57 선언된 변수는 키워드에 따라 인식 범위가 다르다 ... 57 인식 범위 ... 58 변수의 인식 범위는 왜 필요한가? ... 59 변수의 데이터 형식 ... 59 변수 이름, 인식 범위, 데이터 형식 요약 ... 60 Byte 형식 예제 ... 61 Boolean 형식 예제 ... 62 Integer 예제 ... 63 변수의 수명 ... 64 상수란 무엇인가 ... 66 시스템 정의 상수 종류 ... 66 4. 요약과 활용 ... 70 프로젝트의 구성 요소 ... 70 개체(Object)의 구조 ... 70 이벤트 활용 ... 70 프로젝트, 모듈, 프로시저, 변수의 관계 ... 70 Sub 프로시저에서 Function 프로시저 호출 ... 70 Chapter 4 매크로 기본 규칙만 알면 80% 성공 1. 지정문과 Set 문 ... 73 지정문 ... 73 Set 문 ... 74 2. 조건문은 이렇게 사용한다 ... 76 If ~ Then ~ Else ~ End If 문 ... 77 조건문 ... 77 조건문 예제 ... 79 If ~ Then ~ ElseIf ~ ElseIf ~ Else ~ End If 문 ... 80 조건문 : If 문 중첩 ... 82 Select Case 문 ... 84 3. 순환문은 이렇게 사용한다 ... 87 순환문은 왜 필요한가? ... 87 For ~ To ~ Next 문 ... 87 중첩 순환문 ... 90 For Each ~ In ~ Next 문 ... 91 워크시트는 모두 몇 개일까? ... 91 셀에 색상 칠하기 ... 92 Do While 조건식 Loop 문 ... 93 Do Until 조건식 Loop 문 ... 95 While ~ Wend 문 ... 96 4. 연산자를 사용하는 방법 ... 97 5. 요약과 활용 ... 99 변수에 값 지정, 개체 참조 ... 99 변수의 데이터 형식이 Variant ... 99 셀에 값과 수식 입력 ... 100 With 문 ... 100 중첩 순환문 ... 100 순환문 연습 ... 101 Chapter 5 통합 문서, 워크시트 제어 1. 엑셀의 개체 모델 ... 103 2. Application 개체 ... 104 ScreenUpdating 속성 ... 104 StatusBar 속성 ... 106 Calculation 속성 ... 108 Caller 속성 ... 109 Cursor 속성 ... 110 DefaultFilePath 속성 ... 110 DisplayAlerts 속성 ... 111 EnableCancelKey 속성 ... 111 MoveAfterReturn 속성 ... 112 Names 속성 ... 112 OnWindow 속성 ... 113 Path 속성 ... 113 SheetsInNewWorkbook 속성 ... 113 StartupPath 속성 ... 114 3. Workbook 다루기 ... 114 통합 문서 열기 ... 114 통합 문서의 저장과 닫기 ... 117 통합 문서 저장 닫기 예문 ... 119 통합 문서와 워크시트의 선택과 활성화 ... 120 보호와 해제 ... 120 통합 문서의 복사, 이동, 삭제 ... 121 통합 문서의 연결 유형 ... 122 다른 통합 문서를 참조하는 수식, 이름, 개체를 삭제 ... 123 연결된 수식의 제거 예제 ... 124 파일과 폴더의 삭제 ... 124 4. Worksheet 다루기 ... 125 위크시트 생성과 삭제 ... 125 워크시트의 선택 ... 127 Chapter 6 셀을 제어하는 방법 1. Range 개체 이해하기 ... 129 Range 개체란 무엇인가? ... 129 워크시트에 셀은 모두 몇 개 있을까? ... 130 2. 셀을 선택하는 방법 ... 130 셀 주소 표기법 ... 130 셀을 선택하는 방법 ... 131 Select와 Activate의 차이점 ... 132 3. 셀에 값 입력과 삭제 ... 133 셀에 값 입력 ... 133 셀의 값 삭제 ... 134 메모 삽입과 삭제 ... 135 모든 개체 삭제 ... 135 4. 셀 주소 알아보기 ... 136 Address 속성 ... 136 셀 범위의 상대 주소 ... 136 상대 주소의 예제 ... 137 선택 영역의 상하좌우 마지막 셀의 주소 ... 139 다수 영역의 셀 주소 ... 140 다수 선택 영역의 영역별 주소 알아내기 ... 141 두 개의 선택 영역에서 교차하는 영역을 구하기 ... 141 두 영역의 합집합을 구한다 ... 142 5. 행과 열을 다루는 방법 ... 143 홀수 행에 행 삽입 ... 143 짝수 행에 행을 삽입 ... 144 항목의 값이 다르면 행을 삽입 ... 144 행과 열의 삭제 ... 145 셀이 공란이면 행을 삭제 ... 145 행 전체에 데이터가 없다면 행을 삭제 ... 146 6. 셀 범위 동적 참조 방법 ... 147 End 속성에 대해서 ... 147 End 속성의 정리 ... 148 UsedRange, CurrentRegion에 대해서 ... 148 셀 범위 재설정(Resize) ... 149 7. 동적으로 특정 셀 참조하는 방법 ... 151 Offset 속성 ... 151 값이 없는 특정 셀 찾기 ... 152 Count와 CountA의 차이점 ... 155 8. 복사와 붙여넣기 ... 156 복사, 붙여넣기 ... 156 9. 활용 예제 ... 157 검색한 데이터 복사/붙여넣기 ... 157 자동 필터와 데이터의 복사/붙여넣기 ... 159 규칙적인 테두리 만들기 ... 163 실제의 마지막 셀 참조 ... 165 셀 선택 제한 이벤트 ... 166 다수 셀 범위 데이터를 정렬하여 입력하기 ... 167 Chapter 7 사용자 함수에 대해서 1. 사용자 함수의 원리 ... 169 2. 사용자 함수의 활용 ... 170 출장비 계산 함수 ... 170 성과급 계산 함수 ... 171 보이는 행만 합산하는 함수 ... 173 문자열 계산 함수 ... 173 Chapter 8 자동 필터와 고급 필터 매크로 활용 1. 자동 필터 매크로에 대해서 ... 175 사용자 지정 자동 필터 ... 175 자동 필터와 복사 & 붙여넣기 ... 177 2. 고급 필터 매크로에 대해서 ... 179 고급 필터의 기본 ... 179 고급 필터(두 날짜 사이의 자료 필터) ... 180 고급 필터 예제 모음 ... 183 Chapter 9 피벗 테이블과 차트 매크로 1. 피벗 테이블 매크로 ... 185 피벗 테이블 만들기(엑셀) ... 185 피벗 테이블 만들기(데이터베이스) ... 187 피벗 차트 만들기 ... 188 2. 차트 응용과 매크로 ... 190 간트 차트 ... 190 동적 차트 - 1 ... 194 동적 차트 - 2 ... 196 Chapter 10 배열은 속도를 향상시킨다 1. 배열과 배열 수식 ... 197 배열이란? ... 197 워크시트에서 배열 입력 ... 198 배열의 연산 ... 198 배열 수식과 배열 상수 ... 199 배열 수식의 연습 ... 200 2. 매크로의 배열 ... 203 매크로에서 배열이 필요한 이유 ... 203 〈불합리한 구상〉 ... 203 〈바람직한 구상〉 ... 203 배열 변수의 선언 ... 204 다차원 배열 변수 ... 205 배열 선언의 규칙 ... 206 배열과 Variant ... 207 배열을 다른 배열에 대입 ... 208 함수에서 배열 반환 ... 209 문자열을 배열로 반환하는 사용자 정의 함수 ... 210 배열에 값이 존재하는지 검사하는 사용자 정의 함수 ... 211 데이터 행렬 위치 변경 ... 211 동적 배열 선언 ... 212 2차원 동적 배열 ... 213 2차원 배열 ... 216 행의 데이터를 열의 방향으로 이동하는 매크로 ... 217 열의 데이터를 행의 방향으로 이동하는 매크로 ... 218 배열의 정렬 ... 219 문자의 오름차순 정렬 ... 221 셀 범위의 배열 ... 223 3. Collection 개체 ... 224 1행의 데이터를 A열로 이동 ... 224 고유값만 추출 ... 225 고유값 추출하고 정렬 ... 226 4. 요약과 활용 ... 228 배열 수식 응용(1) ... 229 배열 수식 응용(2) ... 230 고유값의 수 카운트 ... 231 Chapter 11 매크로에서 파일과 폴더의 제어도 가능한가? 1. FileSearch 개체 ... 233 폴더의 파일을 검색 ... 233 파일을 검색하고 오름차순 정렬 ... 234 검색 후 순수 파일명 구하기 ... 235 2. FileSystemObject 개체 ... 237 파일의 복사 ... 237 FileCopy 문 ... 237 파일의 삭제 ... 238 폴더의 복사, 생성, 삭제 ... 238 드라이브 종류 알아보기(Drive 개체) ... 239 폴더의 모든 파일 이름 검색(FileSystemObject) ... 240 파일의 정보 알아내기(만든 날, 접속일, 수정일, 파일의 크기) ... 241 폴더와 파일의 존재를 검사하는 함수 ... 242 텍스트 파일에 문자 추가 ... 242 3. 요약과 활용 ... 244 폴더명과 파일명 검색하기 ... 244 텍스트 문서 제어 ... 246 텍스트 문서 가져오기 ... 249 통합 문서 취합 ... 251 파일 검색 클래스(고급 수준) ... 255 Chapter 12 사용자 정의 폼 알고 보면 쉽다 1. 양식의 컨트롤 ... 257 양식의 체크 상자 ... 261 양식의 옵션 단추 ... 262 양식의 콤보 상자 ... 264 양식의 스크롤 막대 ... 265 2. 사용자 정의 폼 ... 266 폼의 삽입(생성) ... 266 사용자 정의 폼 속성 ... 267 사용자 정의 폼 맛보기 ... 268 3. 컨트롤 속성과 사용법(UserForm) ... 272 텍스트 상자 ... 272 주소록 만들기 ... 274 콤보 상자(ComboBox) ... 277 리스트 상자(ListBox) ... 282 컨트롤의 연동 ... 287 옵션 버튼과 체크 박스 ... 289 체크 박스 ... 291 토글 버튼(ToggleButton) ... 292 연속 탭(TabStrip) ... 293 4. 요약과 활용 ... 295 리스트 상자의 목록 수정 ... 295 콤보 상자와 리스트 상자의 연동 ... 298 콤보 상자로 시트 선택 ... 301 Chapter 13 추가 기능을 마음대로 만들 수 있으면 매크로 고수 1. 추가 기능 프로그램에 대해서 ... 305 추가 기능이란? ... 305 추가 기능 만들기 ... 307 설치된 추가 기능의 정보 알아내기 ... 307 추가 기능으로 실행되면 파일이 숨겨진다 ... 307 추가 기능을 로드 또는 언로드할 때 자동으로 코드 실행 ... 308 COM 추가 기능 ... 309 2. VBE 개체 ... 312 VBE 개체란 ... 312 VBProject 개체 ... 314 VBComponent 개체 ... 315 CodeModule 개체 ... 317 CodePane 개체 ... 318 통합 문서에 모듈을 삽입 ... 319 통합 문서의 특정 모듈 삭제 ... 319 모듈에 프로시저와 코드를 삽입 ... 320 코드 삭제 ... 321 모듈 종류 알아보기 ... 322 모듈의 프로시저 이름 알아보기 ... 323 모듈을 비주얼베이직 파일로 내보내기 ... 324 비주얼베이직 파일 내보내기/가져오기(1) ... 326 비주얼베이직 파일 내보내기/가져오기(2) ... 326 3. 커맨드바 ... 328 커맨드바(CommandBar)란? ... 328 CommandBar의 종류 ... 328 CommandBars 컬렉션 개체 ... 329 커맨드바에 버튼 추가 ... 332 커맨드바 컨트롤의 종류 알아보기 ... 334 워크시트 메뉴바에 컨트롤 추가하기 ... 337 팝업 메뉴의 하부 메뉴에 컨트롤 추가하기 ... 340 빠른 메뉴바 만들기 ... 341 셀 메뉴바의 컨트롤 추가/삭제 ... 342 FaceId ... 343 워크시트를 사용한 메뉴바 만들기 ... 345 Chapter 14 데이터베이스로 매크로에 날개를 달자 1. 데이터베이스 이해 ... 351 데이터베이스의 필요성 ... 351 통합 문서도 데이터베이스 파일이다 ... 352 데이터베이스 열기(공유, 읽기 전용) ... 356 데이터베이스 열기(암호) ... 357 외부 데이터베이스 열기(엑셀) ... 358 Table 정보 알아보기(DAO) ... 360 테이블의 필드이름 출력(DAO) ... 361 통합 문서 테이블 정보 출력(DAO) ... 362 테이블 정보 출력(ADO/ADOX) ... 362 필드 이름 출력(ADOX) ... 364 2. 데이터 핸들링 ... 365 데이터 가져오기(DAO/OpenRecordset) ... 365 데이터 가져오기(ADO/OpenRecordset) ... 367 테이블 필드 레코드의 생성과 업데이트 ... 369 엑셀의 테이블은 삭제되지 않는다 ... 374 3. SQL에 대해서 ... 374 SQL(Structured Query Language)의 개념 ... 374 SELECT 문 ... 375 필드에 특정 문자열이 포함된 자료 ... 376 질의 실행 프로시저 ... 378 테이블의 레코드 통합 ... 387 필드명이 같으면 레코드를 결합 ... 388 두 테이블에서 중복된 레코드는 제외하고 결합 ... 390 매개 변수 쿼리(Parameters) ... 392 크로스탭 쿼리(TransForm, Pivot) ... 393 테이블 생성과 삭제(Execute, Drop) ... 394 하위 쿼리 ... 395 4. 요약과 응용 ... 396 dBase 파일 다루기 ... 396 특정 시트의 특정 셀 범위 값을 가져오기 ... 398 워크시트를 mdb 파일의 테이블로 내보내기 ... 400 Chapter 15 매크로의 고급 활용 1. 견적서 프로그램 만들기 ... 403 2. 인쇄와 관련된 매크로 ... 412 고지서 만들기 ... 412 우편봉투 라벨 만들기 ... 414 3. 엑셀 명함관리 ... 418 4. 우편번호 검색 프로그램 ... 437 5. 세금계산서 발행 프로그램 ... 441