內容簡介
《Excel VBA程式開發自學寶典(第3版)》是VBA入門與提高的經典教材。全書分上下兩篇,上篇包含入門知識,對VBA的基礎理論、語法規則、編寫思路、代碼最佳化思路等都提供了詳盡的理論闡述和案例演示。下篇包含進階知識,提供窗體設計、正則表達式、字典、FileSystemObject、類模組、註冊表、功能區設計、開發載入宏、封裝代碼等高級套用。
本書基於Excel 2010撰寫,不過代碼可在Excel 2007、Excel 2010和Excel 2013中通用。
本書是《Excel VBA程式開發自學寶典(第2版)》的升級版,在升級過程中做了大量(不少於60%)的修改,包括調整章節順序、捨棄部分實用性不大的內容、修改書寫方式、完善代碼的含義注釋、刪除已經過時的一些技巧、增加全新案例等。
圖書目錄
上 篇
第1 章 初步感受VBA 的魅力.................................................................................................... 1
1.1 批量任務一鍵執行.................................................................................................................... 1
1.1.1 準備工作........................................................................................................................ 1
1.1.2 程式測試........................................................................................................................ 1
1.1.3 案例點評........................................................................................................................ 2
1.2 多工作簿自動匯總.................................................................................................................... 2
1.2.1 案例需求........................................................................................................................ 2
1.2.2 程式測試........................................................................................................................ 3
1.2.3 案例點評........................................................................................................................ 3
1.3 淺談VBA 優勢........................................................................................................................... 3
1.3.1 批量執行任務................................................................................................................ 3
1.3.2 將複雜的任務簡單化.................................................................................................... 3
1.3.3 提升工作表數據的安全性............................................................................................ 4
1.3.4 提升數據的準確性........................................................................................................ 4
1.3.5 完成Excel 本身無法完成的任務................................................................................. 4
1.3.6 開發專業程式................................................................................................................ 4
第2 章 VBA 程式入門.................................................................................................................... 5
2.1 如何存放代碼............................................................................................................................ 5
2.1.1 認識模組........................................................................................................................ 5
2.1.2 管理模組........................................................................................................................ 6
2.2 如何產生代碼............................................................................................................................ 7
2.2.1 複製現有的代碼............................................................................................................ 7
2.2.2 錄製宏............................................................................................................................ 7
2.2.3 手工編寫代碼................................................................................................................ 9
2.2.4 從模板中獲取代碼...................................................................................................... 10
2.3 如何調用代碼.......................................................................................................................... 10
2.3.1 F5 鍵............................................................................................................................ 10
2.3.2 Alt+F8 組合鍵............................................................................................................. 11
2.3.3 自定義快捷鍵.............................................................................................................. 12
2.3.4 按鈕.............................................................................................................................. 13
2.3.5 選單.............................................................................................................................. 13
2.4 如何保存代碼.......................................................................................................................... 13
2.4.1 工作簿格式.................................................................................................................. 13
2.4.2 解決代碼丟失問題...................................................................................................... 14
2.4.3 顯示檔案擴展名.......................................................................................................... 14
2.5 如何放行代碼.......................................................................................................................... 15
2.6 如何查詢代碼幫助.................................................................................................................. 17
2.6.1 調用幫助系統.............................................................................................................. 17
2.6.2 為什麼查看不了幫助.................................................................................................. 18
第3 章 VBA 的程式結構分析.................................................................................................... 19
3.1 子過程的結構.......................................................................................................................... 19
3.1.1 認識程式結構.............................................................................................................. 19
3.1.2 為VBA 程式添加注釋................................................................................................. 20
3.2 子過程的作用範圍.................................................................................................................. 20
3.2.1 何謂作用範圍.............................................................................................................. 21
3.2.2 公有過程與私有過程的區別...................................................................................... 21
3.3 過程的命名規則...................................................................................................................... 22
3.4 過程的參數.............................................................................................................................. 22
3.5 過程的執行流程...................................................................................................................... 22
3.5.1 正常的執行流程.......................................................................................................... 23
3.5.2 改變程式的執行流程.................................................................................................. 23
3.6 中斷過程.................................................................................................................................. 24
3.6.1 結束過程:End Sub ................................................................................................... 24
3.6.2 中途結束過程:Exit sub ............................................................................................ 24
3.6.3 中途結束一切:End................................................................................................... 24
3.6.4 暫停過程:Stop.......................................................................................................... 24
3.6.5 手動暫停程式:Ctrl+Break....................................................................................... 25
第4 章 VBA 四大基本概念........................................................................................................ 26
4.1 Excel 的對象............................................................................................................................ 26
4.1.1 什麼是對象.................................................................................................................. 26
4.1.2 對象與對象集合.......................................................................................................... 27
4.1.3 對象的層次結構.......................................................................................................... 29
4.1.4 父對象與子對象.......................................................................................................... 30
4.1.5 活動對象...................................................................................................................... 31
4.2 對象的方法和屬性.................................................................................................................. 32
4.2.1 屬性與方法的區別...................................................................................................... 32
4.2.2 查詢方法與屬性的兩種方法...................................................................................... 33
4.2.3 方法與屬性的套用差異.............................................................................................. 34
4.3 對象的事件.............................................................................................................................. 36
4.3.1 什麼是事件.................................................................................................................. 36
4.3.2 事件的分類及其層級關係.......................................................................................... 37
4.3.3 工作簿事件與工作表事件一覽.................................................................................. 37
4.3.4 工作簿與工作表事件的作用對象.............................................................................. 39
4.3.5 快速掌握事件過程...................................................................................................... 41
4.3.6 何時需要使用事件過程.............................................................................................. 41
第5 章 通過變數強化程式功能................................................................................................. 42
5.1 數據類型.................................................................................................................................. 42
5.1.1 為什麼要區分數據類型.............................................................................................. 42
5.1.2 認識VBA 的數據類型................................................................................................. 42
5.2 聲明變數.................................................................................................................................. 44
5.2.1 變數的定義.................................................................................................................. 44
5.2.2 變數的聲明方式.......................................................................................................... 44
5.2.3 變數的賦值方式與初始值.......................................................................................... 46
5.2.4 如何確定變數的數據類型正確.................................................................................. 47
5.2.5 正確聲明變數的數據類型的優勢.............................................................................. 47
5.2.6 變數的作用域.............................................................................................................. 49
5.2.7 變數的生存周期.......................................................................................................... 50
5.3 對象變數.................................................................................................................................. 50
5.3.1 如何區分對象變數和數據變數.................................................................................. 51
5.3.2 對變數賦值.................................................................................................................. 51
5.3.3 使用對象變數的優勢.................................................................................................. 52
5.4 聲明常量.................................................................................................................................. 53
5.4.1 常量的定義與用途...................................................................................................... 54
5.4.2 常量的聲明方式.......................................................................................................... 54
5.4.3 常量的命名規則.......................................................................................................... 55
第6 章 深入剖析常見對象的引用方式.................................................................................. 56
6.1 關於對象.................................................................................................................................. 56
6.1.1 對象的結構.................................................................................................................. 56
6.1.2 對象與對象的集合...................................................................................................... 57
6.1.3 引用集合中的單一對象.............................................................................................. 57
6.1.4 父對象與子對象.......................................................................................................... 57
6.1.5 活動對象...................................................................................................................... 58
6.2 對象的簡化引用...................................................................................................................... 58
6.2.1 使用對象變數.............................................................................................................. 58
6.2.2 使用With 語句............................................................................................................ 59
6.3 單元格對象.............................................................................................................................. 61
6.3.1 Range(""A1"")方式引用單元格...................................................................................... 61
6.3.2 Cells(1,1)方式引用單元格.......................................................................................... 63
6.3.3 [a1]方式引用單元格................................................................................................... 65
6.3.4 Range(""A1"")、Cells(1,1)與[a1]引用單元格方式比較.................................... 65
6.3.5 Selection 與ActiveCell:當前選區與活動單元格.................................................... 66
6.3.6 已用區域與當前區域.................................................................................................. 67
6.3.7 SpecialCells:按條件引用區域................................................................................. 68
6.3.8 CurrentArray:引用數組區域.................................................................................... 70
6.3.9 Resize:重置區域大小............................................................................................... 70
6.3.10 Offset:根據偏移量引用新區域.............................................................................. 71
6.3.11 Union:多區域合集.................................................................................................. 73
6.3.12 Intersect:單元格、區域的交集............................................................................. 74
6.3.13 End:引用源區域的區域尾端的單元格................................................................. 75
6.3.14 RangeFromPoint:螢幕坐標下的單元格............................................................... 77
6.4 圖形對象.................................................................................................................................. 78
6.4.1 Shapes:圖形對象集合............................................................................................. 78
6.4.2 圖形對象的名稱.......................................................................................................... 79
6.4.3 DrawingObjects:隱藏的圖形對象集合................................................................... 80
6.5 表對象...................................................................................................................................... 81
6.5.1 表的類別...................................................................................................................... 81
6.5.2 Worksheets:工作表集合.......................................................................................... 82
6.5.3 引用工作表子集.......................................................................................................... 82
6.5.4 ActiveSheet:活動表.................................................................................................. 83
6.5.5 工作表的特性.............................................................................................................. 83
6.6 工作簿對象.............................................................................................................................. 84
6.6.1 工作簿格式與特性...................................................................................................... 84
6.6.2 Workbooks:工作簿集合........................................................................................... 84
6.6.3 引用工作簿子集.......................................................................................................... 84
6.6.4 活動工作簿.................................................................................................................. 85
第7 章 常用語句的語法剖析..................................................................................................... 86
7.1 創建輸入框.............................................................................................................................. 86
7.1.1 Application.Inputbox 方法.......................................................................................... 86
7.1.2 基本語法...................................................................................................................... 86
7.1.3 案例套用...................................................................................................................... 87
7.2 條件判斷語句.......................................................................................................................... 91
7.2.1 IIF 函式的語法與套用................................................................................................. 91
7.2.2 IIF 函式的限制............................................................................................................. 95
7.2.3 IF Then 語句的語法詳解............................................................................................ 95
7.2.4 IF Then 套用案例........................................................................................................ 96
7.2.5 IF Then Else 語句的語法與套用................................................................................ 97
7.2.6 多條件嵌套的條件判斷語句...................................................................................... 99
7.2.7 Select Case 語法詳解..............................................................................................103
7.2.8 Select Case 與IF Then Else 之比較.......................................................................107
7.2.9 借用Choose 函式簡化條件選擇.............................................................................107
7.3 循環語句................................................................................................................................109
7.3.1 For Next 語句............................................................................................................109
7.3.2 For Each Next 語句...................................................................................................116
7.3.3 Do Loop 語法詳解....................................................................................................122
7.4 錯誤處理語句........................................................................................................................129
7.4.1 錯誤類型與原因........................................................................................................130
7.4.2 Err 對象及其屬性、方法..........................................................................................130
7.4.3 認識Error 函式..........................................................................................................131
7.4.4 On Error GoTo line....................................................................................................132
7.4.5 On Error Resume Next .............................................................................................135
7.4.6 On Error GoTo 0........................................................................................................139
7.5 選擇檔案與資料夾................................................................................................................140
7.5.1 認識FileDialog 對象.................................................................................................140
7.5.2 選擇路徑....................................................................................................................141
7.5.3 選擇檔案....................................................................................................................142
7.5.4 按類型選擇檔案........................................................................................................143
第8 章 讓代碼自動執行.............................................................................................................146
8.1 讓宏自動執行........................................................................................................................146
8.1.1 Auto 自動宏...............................................................................................................146
8.1.2 升級版自動宏:事件................................................................................................147
8.1.3 事件的禁用與啟用....................................................................................................149
8.1.4 事件的特例................................................................................................................150
8.2 工作表事件套用案例............................................................................................................152
8.2.1 在狀態欄提示最大值的單元格地址........................................................................152
8.2.2 快速錄入出勤表........................................................................................................153
8.2.3 在狀態欄顯示選區的字母、數字、漢字個數........................................................154
8.2.4 實時監控單元格每一次編輯的數據與時間............................................................156
8.2.5 利用數字簡化公司名輸入........................................................................................158
8.2.6 錄入數據時自動跳過帶公式的單元格....................................................................160
8.2.7 對選擇區域進行背景著色........................................................................................161
8.3 工作簿事件套用案例............................................................................................................162
8.3.1 新建工作表時自動設定頁眉....................................................................................163
8.3.2 未匯總則禁止列印與關閉工作簿............................................................................164
8.3.3 為所有工作表設計一個閱讀模式............................................................................165
8.3.4 設計未啟用宏就無法打開的工作簿........................................................................167
第9 章 綜合套用案例..................................................................................................................170
9.1 Application 套用案例............................................................................................................170
9.1.1 計算字元表達式........................................................................................................170
9.1.2 合併相同且相鄰的單元格........................................................................................171
9.1.3 在指定時間提示行程安排........................................................................................173
9.1.4 模擬鍵盤快捷鍵打開高級選項................................................................................174
9.1.5 使用快捷鍵合併與取消單元格................................................................................175
9.1.6 查找至少兩月未付貨款的客戶名稱........................................................................177
9.2 Range 對象套用案例............................................................................................................179
9.2.1 合併工作表................................................................................................................179
9.2.2 合併區域且保留所有數據........................................................................................181
9.2.3 合併計算多區域的值................................................................................................183
9.2.4 模糊查找公司名稱並羅列出來................................................................................185
9.2.5 反向選擇單元格........................................................................................................187
9.2.6 插入圖片並調整為選區大小....................................................................................189
9.2.7 提取唯一值................................................................................................................191
9.2.8 隱藏所有公式結果為錯誤的單元格........................................................................192
9.3 Comment 對象套用案例.....................................................................................................194
9.3.1 在所有批註末尾添加指定日期................................................................................194
9.3.2 生成圖片批註............................................................................................................196
9.3.3 添加個性化批註........................................................................................................197
9.3.4 批量修改當前表的所有批註外觀............................................................................199
9.4 WorkSheet 對象套用案例.....................................................................................................202
9.4.1 新建工作表且命名為今日日期................................................................................202
9.4.2 批量保護工作表與解除保護....................................................................................203
9.4.3 為所有工作表設定水印............................................................................................205
9.4.4 批量命名工作表........................................................................................................206
9.4.5 判斷篩選條件............................................................................................................209
9.5 Workbook 對象套用案例......................................................................................................211
9.5.1 拆分工作簿................................................................................................................212
9.5.2 每10 分鐘備份一次工作簿......................................................................................213
9.5.3 5 分鐘未編輯工作簿則自動備份.............................................................................215
9.5.4 記錄檔案打開次數....................................................................................................216
9.5.5 不打開工作簿而提取數據........................................................................................218
9.5.6 建立指定資料夾下所有工作簿目錄和工作表目錄................................................220
第10 章 編程規則與代碼最佳化.................................................................................................223
10.1 代碼編寫規則......................................................................................................................223
10.1.1 對代碼添加注釋......................................................................................................223
10.1.2 長代碼分行..............................................................................................................226
10.1.3 代碼縮進對齊..........................................................................................................227
10.1.4 聲明有意義的變數名稱..........................................................................................228
10.1.5 IF Then…End If 類配對語句的錄入方式..............................................................229
10.1.6 錄入事件代碼的方式..............................................................................................230
10.1.7 錄入屬性與方法的技巧..........................................................................................230
10.1.8 無提示的詞組的錄入技巧......................................................................................231
10.1.9 善用公共變數..........................................................................................................232
10.1.10 將比較大的過程分為多個再調用........................................................................232
10.1.11 減少過程參數........................................................................................................233
10.1.12 使用DoEvents 轉移控制權.................................................................................233
10.1.13 使用常量名稱替代常數........................................................................................233
10.1.14 儘可能兼容Excel 2003、2010 和2013 版本....................................................233
10.2 最佳化代碼..............................................................................................................................234
10.2.1 強制聲明變數..........................................................................................................234
10.2.2 善用常量..................................................................................................................234
10.2.3 關閉螢幕更新..........................................................................................................234
10.2.4 利用With 減少對象讀取次數................................................................................235
10.2.5 利用變數減少對象讀取次數..................................................................................236
10.2.6 善用帶$的字元串處理函式....................................................................................236
10.2.7 利用數組代替單元格對象......................................................................................237
10.2.8 不使用Select 和Activate 直接操作對象..............................................................237
10.2.9 將與循環無關的語句放到循環語句外..................................................................237
10.2.10 利用Instr 函式簡化字元串判斷...........................................................................237
10.2.11 使用Replace 函式簡化字元串連線....................................................................238
第11 章 利用參數強化過程......................................................................................................240
11.1 什麼是參數..........................................................................................................................240
11.1.1 參數的概念與用途..................................................................................................240
11.1.2 參數的語法結構......................................................................................................240
11.2 設計帶有參數的Sub 過程.................................................................................................241
11.2.1 必選參數..................................................................................................................241
11.2.2 可選參數..................................................................................................................243
11.2.3 不確定數量的參數..................................................................................................244
11.3 參數的賦值方式..................................................................................................................245
11.3.1 按位置賦值..............................................................................................................245
11.3.2 按名稱賦值..............................................................................................................246
11.3.3 方法的參數..............................................................................................................246
第12 章 編程的捷徑....................................................................................................................248
12.1 錄製宏..................................................................................................................................248
12.1.1 錄製宏的目的..........................................................................................................248
12.1.2 錄製宏的方法..........................................................................................................249
12.2 查看提示..............................................................................................................................251
12.2.1 屬性與方法列表......................................................................................................251
12.2.2 參數提示..................................................................................................................252
12.3 調用筆記...............................................................................................