內容簡介
本書從一個專業程式(VBA外掛程式)的套用開始,逐步分析VBA程式的優勢,以及VBA的歷史、概念、編輯器、語法規則、數組、函式、檔案目錄與磁碟管理等VBA語言的基礎。然後講述三類程式的開發思路與語法,包括VBE專用程式、VB編寫的DLL外掛程式,以及工作簿中通用的載入宏程式。最後通過大型的Excel百寶箱外掛程式的設計來實踐程式開發理論,讓讀者對程式開發有進一步地認識,並實踐本書所闡述的程式開發思想。
本書通過60%的篇幅講述VBA的理論與語法基礎,其中穿插了程式編寫常規則及代碼最佳化之道,讓讀者在編寫代碼解決日常工作的基礎上,懂得如何提升代碼的執行效率與通用性。另外還涉及了大量的自定義函式,以及腳本語言、FileSystemObject、DOS語言在VBA中的套用等。最後利用40%的篇幅講述專業程式的理論基礎與開發思想,以及通過多個大型的外掛程式程式設計過程演示如何開發專業程式,以及對外掛程式程式應如何防錯及提速。
本書除講解VBA的理論以外,重點探討如何開發一個完整的大中型外掛程式程式,在程式開發中應如何防止錯誤、提升效率,以及確保程式的通用性。書中的所有程式都有完善的防錯機制,並通用於Excel 2003和Excel 2007。
前言
Excel是一款極優秀的表格設計與數據分析軟體。特別是它所集成的VBA語言可以對Excel程式進行二次開發,大大拓展了Excel的功能,使Excel不再局限於設計表格,而具有了程式改造、外掛程式開發與多任務批處理的功能。
本書目的
Excel VBA是一門強化、改造Excel的程式語言。利用VBA通常可以完成兩大類任務:解決自己的工作問題(強化)和開發通用軟體(改造)。而市場上大量的VBA書籍大都屬於前者,側重講述VBA基本語法及如何利用VBA處理一個具體的工作中的疑難問題,而對於開發通用型外掛程式來延伸Excel的通用功能這方面則少有涉及。本書旨在彌補這種不足,在VBA理論的基礎之外重點闡述如何開發外掛程式,以適應一個群體的需求,而非僅僅處理個人的臨時性問題。
本書除60%的篇幅普及VBA相關的理論知識外,還對如何提升程式的通用性、防錯、提速等方面進行反覆的闡述與論證,通過大量的實例傳授程式的最佳化之道,及如何讓程式在新舊版本的Excel中都能準確無誤地執行。
另外,對於與VBA相關的其他邊緣性知識體系也做了系統的介紹,例如腳本語言WScript、檔案管理系統FileSystemObject、DOS磁碟管理系統與API函式在VBA中的套用。通過本書,讀者可以對VBA有相當完善的認識與理解,並建立自己的程式開發思想,具備開發大中型專業程式的能力。
本書結構
《Excel VBA程式開發自學寶典》是一本講述VBA語言理論基礎及開發VBA程式的書,全書共32章,分以下五個部分:
入門篇:VBA優勢、功能與概念
進階篇:VBA語法、過程與事件
登堂篇:VBA數組、窗體與控制項
入室篇:檔案管理、選單、API、VBE與載入項
攀峰篇:開發通用外掛程式
本書特點
相對於同類書籍,本書在內容編排上具有以下特點:
1. 除對VBA語言的基礎語法與對象操作解說外,重點展示如何開發一個獨立完善的外掛程式。而非僅僅局限在通過VBA解決一個臨時性工作問題,通過本書,你完全可以實現編寫自己的商業性軟體,也可以開發一個完善的管理系統。
2. 本書程式非常注重通用性,所有程式代碼都通用於Excel 2003和Excel 2007。不管用戶使用的Excel 2003還是Excel 2007,都可以正常執行書中所有代碼。
3. 本書對代碼的執行速度有較多的筆墨敘述,而且總結了13條代碼最佳化的規則。
4. 本書除VBA基本語法的教學外,另一個重點是如何開發外掛程式。相對於普通的宏過程,開發外掛程式的難度更高,通用性、防錯性等要求都更嚴謹。本書通過對大型外掛程式的程式思想、思路以及步驟進行詳述,從而促使讀者對VBA程式語言的理論有更深入的認識與運用。
5. 詳述利用VB 6.0企業版開發具有更高安全性的COM載入項,讀者可以藉此開發自己的商業軟體。
6. 除VBA外,本書還包括了WScript、FileSystemObject、DOS、API等語言的套用,將這些語言配合VBA可以擴充VBA的功能,完成更多的工作需求。
光碟檔案
本書的隨書光碟包括書中所有實例檔案的代碼,以及作者精心開發的大型外掛程式“Excel百寶箱7.0”原始碼。
本書以Excel 2007的界面進行敘述,但隨書光碟中的案例區分Excel 2003和Excel 2007兩個版本。不管是Excel 2003用戶還是Excel 2007用戶都可以正常打開檔案,完全不會因版本不同而給學習帶來障礙,也不需要安裝轉換軟體。
另外,本書還配備視頻教材,包括開發提示性輸入工具箱、開發公農曆日期輸入器、工作簿拆分及彩蛋設計、開發通用二級選單外掛程式、監控單元格歷史記錄、設計計畫任務嚮導、用VB開發自動化載入項等7集,同時配備了7集教材中所用到的代碼。將視頻教材與Excel檔案搭配會有更好的學習效果。
適合讀者群
本書對VBA的基礎理論有比較詳盡的介紹,而對VBA的高級知識——數組、類模組、API、VBE組件操作與外掛程式設計也有大量的理論闡述與案例演示。
本書適應的人群包括三類:
一是VBA入門者,可以通過本書系統地學習VBA知識;
二是已有VBA基礎,但需要擴充知識面,讓自己的程式具有更好的通用性、糾錯性及更高的執行效率者,本書對程式的最佳化、糾錯等方面進行了大量的論證;
三是VBA程式愛好者,可以編寫過程來解決自己工作中的問題,但想開發更專業的商業軟體者。本書對開發開源的商業軟體進行了介紹,包括自動化載入項和COM載入項。
作者
本書主要由作者羅剛君編寫,作者是多個大型論壇的版主,有著豐富的VBA程式設計經驗。Excel百寶箱是其標誌性作品,包括100個增強性Excel外掛程式工具。讀者可以從光碟中獲取該工具。
作者專門創辦了一個售後服務論壇,讀者對本書有任何疑問或者建議,都可以登錄以下網址參與交流。
另外參與本書寫作的還有龔丹、李妍妍、張理功、劉星辰、張文麗、鄭亞梅、周禮英、劉小琴、楊斌、楊陽、黎玲、陳小春、張宏展、章蘭新、吳旭東等,在此一併表示感謝。
編著者
2009-7-21
目錄
第 01章 從Excel外掛程式認識VBA
1.1 從身份證號獲取個人信息 1
1.1.1 內置公式法 1
1.1.2 自定義函式法 2
1.1.3 外掛程式法 2
1.1.4 淺談VBA優勢 3
1.2 外掛程式特點及如何發揮外掛程式的優勢 4
1.2.1 Excel外掛程式的特點 4
1.2.2 Excel外掛程式的優勢與限制 6
1.2.3 如何發揮外掛程式的優勢 6
1.2.4 開發Excel外掛程式的條件 6
1.2.5 本書架構 7
第 02章 VBA概述
2.1 VBA的發展史與優缺點 8
2.1.1 宏與VBA 8
2.1.2 VBA歷史與版本 9
2.1.3 VBA優、缺點 9
2.2 VBA能做什麼 10
2.2.1 VBA用途 10
2.2.2 VBA主要用戶 11
2.3 VBA的安全性 12
2.3.1 VBA安全性 12
2.3.2 了解安全性對話框 12
2.3.3 讓自己的VBA程式暢通無阻 14
2.4 使用VBA幫助 16
2.4.1 利用幫助學習VBA語法 16
2.4.2 捕捉錯誤 17
第 03章 巧設VBA編輯器提升編程效率
3.1 認識VBE組件 21
3.1.1 訪問VBA開發環境 21
3.1.2 認識VBE的組件 22
3.1.3 VBE中不同代碼視窗的作用 27
3.2 VBE中選項設定 29
3.2.1 編輯器選項 29
3.2.2 編輯器格式選項 33
3.2.3 通用選項 33
3.2.4 VBA代碼保護 34
第 04章 VBA基本概念
4.1 理解VBA的對象、屬性與方法 36
4.1.1 什麼是對象 36
4.1.2 如何理解屬性 37
4.1.3 如何理解方法 38
4.1.4 判斷對象的屬性與方法 38
4.2 認識VBA的事件 39
4.2.1 什麼是事件 39
4.2.2 事件的分類及其用途 39
4.3 VBA的運算符 40
4.3.1 VBA中運算符的分類 40
4.3.2 算術運算符 40
4.3.3 比較運算符 41
4.3.4 邏輯運算符 41
4.3.5 運算符的優先順序 43
4.4 簡單的字元處理函式 43
4.4.1 字元串處理函式功能介紹 44
4.4.2 StrComp:字元相似比較 44
4.4.3 Strconv:字元串類型轉換 45
4.4.4 Format:格式化字元串 46
4.4.5 LCase/ UCase:大小寫轉換 46
4.4.6 String / Space:重複字元 46
4.4.7 Lset / Rset:字元串往左/右對齊 47
4.4.8 Instr:返回字元出現位置 47
4.4.9 Left/Mid/Right:從左、中、右取值 48
4.4.10 LTrim/RTrim/ Trim:去除空格 48
4.4.11 Like:字元串相似度比較 49
第 05章 VBA數據類型與變數、常量
5.1 數據類型 50
5.1.1 為什麼要區分數據類型 50
5.1.2 認識VBA的數據類型 50
5.1.3 數據類型的聲明與轉換 52
5.2 常量與變數 54
5.2.1 常量的定義與用途 54
5.2.2 常量的聲明方式 54
5.2.3 常量的命名規則 55
5.2.4 變數的定義與用途 56
5.2.5 變數的類型與聲明 56
5.2.6 區分靜態變數與動態變數 57
5.2.7 變數的作用域與生命周期 58
5.2.8 認識對象變數 60
5.2.9 認識數組變數 61
第 06章 認識VBA過程及開發自定義函式
6.1 認識過程 62
6.1.1 過程的分類與調用方式 62
6.1.2 插入過程的方式 64
6.1.3 過程的命名規則 66
6.2 編寫Sub過程 66
6.2.1 Sub過程的語法解析 66
6.2.2 Sub過程的執行流程 68
6.2.3 過程的遞歸 72
6.2.4 Sub過程實例演示 73
6.3 認識Function過程 74
6.3.1 Function過程的特點 74
6.3.2 Function的語法解析 74
6.3.3 調用Function過程 75
6.4 關於過程的參數 76
6.4.1 Sub過程的參數及套用 76
6.4.2 Function過程的參數 78
6.5 開發自定義函式 79
6.5.1 開發不帶參數的Function過程 79
6.5.2 開發帶有一個參數的Function過程 80
6.5.3 開發帶有兩個參數的Function過程 83
6.5.4 開發帶有兩個可選參數的Function過程 84
6.5.5 開發帶有不確定參數的Function過程 86
6.5.6 開發具有三個參數其中第三個為可選的Function過程 89
6.6 編寫函式幫助 91
6.7 總結 96
第 07章 VBA的對象模型與對象表示法
7.1 VBA中的對象及結構 97
7.1.1 關於對象的相關概念 97
7.1.2 對象與對象集合 98
7.1.3 對象的層次:父對象與子對象 99
7.1.4 認識Excel所有對象 100
7.2 對象的表示法 101
7.2.1 對象的完整指定方式與簡寫 101
7.2.2 利用定義名稱獲取對象 101
7.2.3 利用集合索引號獲取對象 102
7.2.4 活動對象的簡化引用 103
7.2.5 利用With語句簡化對象引用 104
7.2.6 事件中的Me關鍵字 104
7.3 單元格的各種引用方式 106
7.3.1 Range("A1")方式引用單元格 106
7.3.2 Cells(1,1)方式引用單元格 109
7.3.3 [a1]方式引用單元格 110
7.3.4 Range("A1")、Cells(1,1)與[a1]比較 111
7.3.5 Selection與ActiveCell:當前選區與活動單元格 112
7.3.6 Names:利用名稱引用單元格或區域 113
7.3.7 UsedRange與CurrentRegion 115
7.3.8 SpecialCells:按條件引用區域 118
7.3.9 CurrentArray:引用數組區域 120
7.3.10 Resize:重置區域大小 120
7.3.11 Offset:根據偏移量引用區域 122
7.3.12 Union:單元格的合集 124
7.3.13 Intersect:單元格、區域的交集 126
7.3.14 End:引用源區域的區域尾端的單元格 128
第 08章 自動宏與Excel事件
8.1 讓宏自動執行 132
8.1.1 Auto自動宏 132
8.1.2 工作簿事件中的自動宏 133
8.1.3 利用滑鼠移動事件執行自動宏 133
8.2 詳談VBA的事件 134
8.2.1 事件的定義與分類 135
8.2.2 事件的層次與執行順序 135
8.2.3 事件的禁用與啟用 137
8.2.4 事件代碼的錄入方式 139
8.3 VBA有哪些事件 140
8.3.1 應用程式級別事件介紹 140
8.3.2 工作簿事件介紹 141
8.3.3 工作表事件介紹 142
8.3.4 事件的特例 142
第 09章 VBA程式常規則
9.1 代碼編寫規則 144
9.1.1 對代碼添加注釋 144
9.1.2 長代碼分行 147
9.1.3 代碼縮進對齊 149
9.1.4 聲明有意義的變數名稱 150
9.1.5 IF...end if類配對語句的錄入方式 151
9.1.6 錄入事件代碼的方式 151
9.1.7 借用自動列出程式錄入代碼 151
9.1.8 善用公共變數 152
9.1.9 將較大的過程分為多個再調用 153
9.1.10 減少過程參數 153
9.1.11 兼容Excel 2007和Excel 2003 153
9.2 最佳化代碼 154
9.2.1 強制聲明變數 154
9.2.2 善用常量 154
9.2.3 關閉螢幕更新 155
9.2.4 利用With減少對象讀取次數 155
9.2.5 利用變數減少對象讀取次數 157
9.2.6 善用帶$的字元串處理函式 157
9.2.7 善用循環中的步長減少循環次數 157
9.2.8 利用數組代替單元格對象 158
9.2.9 不重複調用自定義函式時不使用自定義函式 159
9.2.10 將不改變值或者屬性的語句放到循環語句外 160
9.2.11 利用長度計算判斷單元格是否非空 160
9.2.12 儘量調用內置功能 161
9.2.13 利用對象循環替代單元格循環 161
第 10章 常用語法剖析
10.1 輸入、輸出語句 163
10.1.1 Msgbox函式的功能及作用 163
10.1.2 Msgbox函式的語法 164
10.1.3 Msgbox函式的限制 168
10.1.4 利用WScript突破Msgbox限制 169
10.1.5 Debug.print 170
10.1.6 Inputbox函式的功能與作用 170
10.1.7 Inputbox函式的語法 171
10.1.8 借用Inputbox函式生成月曆 173
10.1.9 Inputbox函式的限制 175
10.1.10 利用Application.Inputbox方法替代Inputbox函式 175
10.1.11 Application.Inputbox語法詳解 176
10.2 條件判斷語句 179
10.2.1 IIF函式的語法與套用 179
10.2.2 IIF函式的限制 182
10.2.3 IF...Then...語句的語法詳解 183
10.2.4 IF...then...套用案例 183
10.2.5 IF...Then...Else...語法與套用 185
10.2.6 條件語句的嵌套套用 186
10.2.7 Select Case語法詳解 189
10.2.8 Select Case與IF...Then...Else之比較 192
10.2.9 借用Choose函式簡化條件選擇 194
10.3 循環語句 196
10.3.1 For Next語句 196
10.3.2 利用循環獲取工作表目錄 202
10.3.3 For Each Next語法詳解 205
10.3.4 利用循環選擇區域中所有負數 206
10.3.5 利用循環統一所有圖片高度並對齊單元格 207
10.3.6 Do Loop語法詳解 209
10.3.7 在工作表中循環獲取所有字型 211
10.3.8 計算得分累加到1000時的月份 213
10.3.9 利用循環產生文字動畫 214
10.4 With語句 215
10.4.1 With語句的用途與語法 215
10.4.2 With語句實例 218
10.4.3 With語句常見錯誤分析 220
10.5 錯誤處理語句 221
10.5.1 錯誤類型與原因 222
10.5.2 Err對象及其屬性、方法 222
10.5.3 認識Error函式 223
10.5.4 羅列錯誤代碼及含義 224
10.5.5 VBA的錯誤處理機制 225
10.5.6 錯誤處理:錯誤三次則退出程式 231
10.5.7 錯誤處理:多功能選區統計 232
10.5.8 錯誤處理的作用域 234
10.5.9 GoSub...Return語句 236
10.5.10 開發錯誤處理函式 238
第 11章 Excel常見對象的套用技巧
11.1 Application套用案例 241
11.1.1 選區拼寫檢查 241
11.1.2 調用工作表函式 242
11.1.3 切換滑鼠形狀 243
11.1.4 計算表達式 244
11.1.5 禁止程式運行時彈出警告框 245
11.1.6 調整計算方式 246
11.1.7 羅列最近使用過的檔案 247
11.1.8 查找並打開檔案 248
11.1.9 建立檔案目錄 248
11.1.10 定製程式標題 250
11.1.11 打開指定應用程式 250
11.1.12 新建一個帶有7個工作表的工作簿 251
11.1.13 在指定時間提示行程安排 252
11.1.14 模擬鍵盤快捷鍵 253
11.1.15 為過程指定快捷鍵 255
11.1.16 合併區域 256
11.1.17 獲取多區域的交集 258
11.1.18 中斷程式到一定時間後再繼續 259
11.1.19 調用內置對話框 260
11.1.20 滾動顯示Excel狀態欄信息 261
11.1.21 添加自定義序列 261
11.1.22 添加名稱 264
11.1.23 將自定義數標記為易失性函式 264
11.1.24 選定任意工作簿中的任意區域 265
11.1.25 設定應用程式的可見性 266
11.1.26 設定批註的顯示方式 267
11.2 Range對象套用案例 268
11.2.1 清除單元格格式 268
11.2.2 複製單元格數據 270
11.2.3 將區域中的數據合併到一個單元格中 272
11.2.4 多工作表數據合併且添加框線 273
11.2.5 讓高度與寬度自動適應數據 275
11.2.6 在區域中精確查找 275
11.2.7 替換不規則貨品名稱 278
11.2.8 將公式添加到批註 278
11.2.9 填充工作日 279
11.2.10 對區域添加四周框線 281
11.2.11 多區域合併 282
11.2.12 對小於60的成績加虛框 283
11.2.13 反向選擇單元格 285
11.2.14 插入圖片並調整為選區大小 287
11.2.15 選擇當前表已用區域的奇/偶數行 289
11.2.16 刪除當前表的空行 290
11.2.17 刪除重複值 291
11.2.18 將選區導出為圖片 293
11.2.19 刪除超連結 295
11.2.20 選擇本表所有合併單元格 296
11.2.21 朗讀選區字元 296
11.2.22 隱藏所有公式結果為錯誤的單元格 297
11.2.23 快速添加日期批註且自動縮放 298
11.2.24 以逗號為分隔設定將文本分列 299
11.2.25 生成二級下拉選單 300
11.2.26 將產量批量轉換成下拉選單 302
11.2.27 設計一個簡單放大鏡 303
11.3 Names對象套用案例 305
11.3.1 羅列當前工作簿的所有名稱 305
11.3.2 利用名稱引用其他表數據 305
11.3.3 隱藏當前工作簿包含“A”的所有名稱 306
11.3.4 借用名稱將區域數據引用到組合框 307
11.3.5 設計三級下拉選單 308
11.4 Comments 對象套用案例 311
11.4.1 批量將數據導入批註 311
11.4.2 在所有批註末尾添加指定日期 313
11.4.3 為批註設定圖片背景 314
11.4.4 添加個性化批註 315
11.4.5 批量修改當前表批註的外觀 318
11.4.6 替換所有批註中的“計算機”為“電腦” 319
11.5 Sheets對象套用案例 320
11.5.1 添加匯總工作表 320
11.5.2 批量添加工作表且以本月日期命名 321
11.5.3 迅速產生樣表 322
11.5.4 將當前表移到其他工作簿 324
11.5.5 除“目錄”工作表外隱藏其他所有工作表 324
11.5.6 分別計算工作表數量和圖表數量 325
11.5.7 建立帶連結功能的工作表目錄且通過快捷鍵返回目錄 326
11.5.8 對當前表已用區域設定背景圖片 328
11.5.9 批量命名工作表 329
11.5.10 隱藏所有工作表非使用區 330
11.6 Workbooks對象套用案例 332
11.6.1 新建工作簿且對其命名為今日期 332
11.6.2 將當前工作簿另外儲存且加密 333
11.6.3 工作簿拆分 335
11.6.4 批量打開檔案 336
11.6.5 導入文本檔案到當前工作簿 338
11.6.6 保存並關閉本工作簿以外的工作簿 339
11.6.7 每30分鐘備份工作簿 340
11.6.8 將當前工作簿備份到D糟 342
11.6.9 清除所有打開工作簿的密碼 342
11.6.10 獲取工作簿建立時間和最後一次保存時間 343
11.6.11 記錄檔案打開次數 344
11.6.12 切換圖形對象隱藏與顯示 345
11.6.13 設計一個查看一次即自動刪除的工作簿 346
11.6.14 禁止插入新工作表 347
11.6.15 不打開工作簿而提取數據 348
11.6.16 將指定資料夾下每個工作簿中的三月生產表合併到一個工作簿 350
11.6.17 建立指定資料夾下所有工作簿目錄和工作表目錄 353
11.6.18 斷開與其他工作簿的數據連結 355
11.7 Windows 對象案例 355
11.7.1 獲取視窗列表 355
11.7.2 確保隨時打開工作簿都視窗最大化 356
11.7.3 切換當前視窗的格線線、滾動條、標題與工作表標籤 357
11.7.4 自由滾動視窗方便閱讀工作表數據 357
11.7.5 以當前單元格為基準拆分窗格 360
11.7.6 計算活動單元格左邊距 360
11.7.7 計算活動單元格的螢幕位置 361
11.7.8 三種方式不顯示零值 362
第 12章 Excel的事件套用案例
12.1 應用程式事件案例 364
12.1.1 新工作簿環境設計 364
12.1.2 打開任意工作簿時全自動備份 365
12.2 工作簿事件案例 366
12.2.1 新建工作表時自動設定頁眉 366
12.2.2 禁止縮小工作簿視窗 367
12.2.3 未匯總則禁止關閉工作簿 368
12.2.4 新建工作表時以當前時間命名 368
12.2.5 關閉工作簿前刪除多餘工作表 369
12.2.6 月底以外時間禁止列印總表 369
12.2.7 調整視窗大小時報告可見區域行列數 370
12.2.8 禁止切換到其他工作簿 371
12.3 工作表事件案例 371
12.3.1 選擇單元格時在狀態欄提示地址 371
12.3.2 快速錄入出勤表 372
12.3.3 建立只能使用一次的超連結 373
12.3.4 讓A1的日期單擊更新 374
12.3.5 在狀態欄顯示選區的字母、數字、漢字個數 374
12.3.6 實時監控單元格每一次的編輯數據與時間 375
12.3.7 利用數字簡化公司名輸入 376
12.3.8 錄入數據時自動跳過帶公式的單元格 377
12.3.9 在工作表的標題行禁用左、右鍵 378
12.3.10 對選擇區域進行背景著色 379
12.3.11 適用於指定區域的自動更正 380
12.4 ActiveX控制項事件案例 381
12.4.1 滑鼠移過時切換按鈕顏色 381
12.4.2 滑鼠移動錄入姓名 382
12.4.3 滑鼠移過組合框時載入圖片 383
12.4.4 滑鼠移過列表框時輸入品名與單價 384
第 13章 數組基礎
13.1 數組基礎 386
13.1.1 數組概念 386
13.1.2 數據的維數 387
13.1.3 利用索引號獲取數組中的元素 388
13.1.4 聲明數組與賦值 389
13.1.5 靜態數組與動態數組 390
13.2 內置數組函式 391
13.2.1 Array:創建一個數組 391
13.2.2 Isarray:判斷是否是數組 392
13.2.3 Index:從數組中取值 392
13.2.4 Transpose:轉置數組 392
13.2.5 LBound / Ubound:獲取數組的上下界 395
13.2.6 Split/ Join:文本與數組轉換 395
13.2.7 Filter:數組的篩選 396
第 14章 開發數組函式與數組套用
14.1 自定義數組函式 398
14.1.1 定義數組函式要點 398
14.1.2 獲取工作表目錄 398
14.1.3 星期序列 399
14.1.4 獲取區域的唯一值 400
14.2 數組套用案例 401
14.2.1 將按姓名排列的縱向學員錶轉置為按班級橫向排列 401
14.2.2 多表學員資料查詢 402
14.2.3 自定義百家姓序列 404
14.2.4 查詢兩列相同項 405
14.2.5 獲取資料夾下所有檔案詳細信息 406
14.2.6 獲取當前表所有批註 407
第 15章 認識窗體與控制項
15.1 UserForm簡介 409
15.1.1 窗體與控制項的用途 409
15.1.2 插入窗體與控制項的方法 409
15.1.3 使用Excel 5.0對話框 410
15.2 窗體控制項一覽 410
15.2.1 標籤 410
15.2.2 文字框 411
15.2.3 命令按鈕 411
15.2.4 複合框 411
15.2.5 列表框 411
15.2.6 複選框 411
15.2.7 單選框 411
15.2.8 分組框 411
15.2.9 切換按鈕 412
15.2.10 多頁控制項 412
15.2.11 滾動條 412
15.2.12 圖像 412
15.2.13 RefEdit 412
15.2.14 附屬檔案控制項 412
15.3 設定控制項屬性 413
15.3.1 調整窗體控制項位置與大小 413
15.3.2 設定控制項的順序 413
15.3.3 共同屬性與非共同屬性 413
15.3.4 設定顏色屬性 414
15.3.5 設定寬與高屬性 414
15.3.6 設定Picture屬性 414
15.3.7 設定游標屬性 415
15.3.8 設定複合框 415
15.3.9 設定Flash動畫 416
15.4 窗體與控制項的事件 416
15.4.1 窗體事件介紹 416
15.4.2 顯示窗體時隨機載入背景圖 417
15.4.3 初始化窗體時填充列表框下拉列表 417
15.4.4 雙擊時關閉窗體 418
15.4.5 窗體永遠顯示在上左角 418
15.4.6 按比例縮放窗體及滾動窗體 419
15.4.7 控制項事件介紹 421
15.4.8 在窗體中建立超連結 421
15.4.9 滑鼠移過更新列表框數據 422
15.4.10 讓輸入學號的文字框僅能錄入6位數字 423
15.4.11 滑鼠拖動調整文字框大小 424
15.4.12 為窗體中所有控制項設定幫助 426
第 16章 窗體控制項運用案例
16.1 窗體運用 428
16.1.1 設計登錄界面 428
16.1.2 許可權認證視窗 429
16.1.3 設計計畫任務嚮導 431
16.1.4 設計動畫幫助 434
16.1.5 用窗體瀏覽圖片 434
16.2 窗體與表格的互動 436
16.2.1 設計多表錄入面板 436
16.2.2 多條件高級查詢 438
16.2.3 分類匯總捐贈額並按需求導出 440
16.2.4 輸入長地名時逐一提示 441
第 17章 表單控制項與ActiveX控制項
17.1 表單控制項 444
17.1.1 控制項的調出方式 444
17.1.2 表單控制項的功能 444
17.1.3 表單工具的優缺點 444
17.1.4 案例:批量插入單選框並分組 445
17.2 ActiveX控制項 446
17.2.1 ActiveX控制項功能 446
17.2.2 利用列表框突破數據有效性的單列限制 446
17.2.3 在工作表中播放Flash動畫 448
17.2.4 在工作表左上角播放GIF動畫 448
17.2.5 在複合框顯示數據源的唯一值 449
第 18章 檔案管理
18.1 認識檔案處理內置命令 451
18.1.1 打開與關閉檔案 451
18.1.2 讀取文本檔案內容 452
18.1.3 複製檔案 453
18.1.4 獲取檔案最後修改時間 453
18.1.5 計算檔案大小 454
18.1.6 獲取檔案屬性及設定檔案屬性 454
18.1.7 刪除檔案 454
18.1.8 創建與刪除資料夾 455
18.1.9 對檔案重命名 455
18.1.10 判斷檔案及目錄是否存在 455
18.2 檔案操作案例 456
18.2.1 批量建立資料夾 456
18.2.2 獲取D糟根目錄中大於1MB的檔案列表 456
18.2.3 將E盤根目錄中所有隱藏的檔案顯示出來 457
18.2.4 備份資料夾中的Excel檔案 457
18.2.5 限制檔案的最晚打開時間 458
18.2.6 刪除資料夾中2年沒有用過的檔案 458
18.2.7 檔案批量重命名 459
第 19章 FSO、WScript與DOS在VBA中的套用
19.1 認識FSO 460
19.1.1 FSO的用途與調用方式 460
19.1.2 FSO的對象 461
19.1.3 FSO常用對象的方法與屬性 461
19.2 用FSO處理檔案與目錄 463
19.2.1 獲取資料夾相關信息 463
19.2.2 刪除D糟中大小為0的資料夾 464
19.2.3 獲取C糟中所有檔案列表 464
19.3 關於腳本語言WScript 464
19.3.1 關於腳本語言 464
19.3.2 WScript的方法與屬性 465
19.3.3 WScript.Shell的使用方法 465
19.4 腳本語言套用案例 466
19.4.1 在桌面建立當前工作簿的捷徑 466
19.4.2 將Excel 2003和Excel 2007添加到右鍵“傳送到”選單 466
19.4.3 顯示桌面所有檔案列表 467
19.4.4 關閉數字鍵及打開大寫鎖定鍵 468
19.4.5 提取選擇的資料夾中所有檔案的信息 468
19.4.6 打開網上鄰居 469
19.4.7 在收藏夾中添加網址 469
19.5 VBA中調用DOS 470
19.6 DOS在VBA中的套用 471
19.6.1 獲取CDE三個磁碟根目錄中的目錄列表 471
19.6.2 獲取D糟中所有Excel檔案 471
19.6.3 獲取IP位址與網關設定 472
第 20章 磁碟與系統信息管理
20.1 獲取磁碟信息 473
20.1.1 CreateObject 配合FSO獲取磁碟信息 473
20.1.2 GetObject配合WMI獲取磁碟信息 474
20.1.3 API法 474
20.2 獲取系統信息 475
20.2.1 羅列當前系統進程 475
20.2.2 獲取硬碟型號與容量 476
20.2.3 獲取解析度 476
第 21章 認識Excel的內置命令欄對象
21.1 關於內置命令欄 478
21.1.1 Excel對命令欄的處理方式 478
21.1.2 內置命令欄的分類 478
21.1.3 手工定義工具列按鈕 478
21.2 了解CommandBars對象 479
21.2.1 CommandBar的常用屬性 479
21.2.2 CommandBar的方法 479
21.2.3 獲取CommandBars子對象的名稱與類型 479
21.2.4 獲取及保存內置圖示 480
第 22章 創建新工具列
22.1 創建與刪除工具列 482
22.1.1 建立工具按鈕基本語法 482
22.1.2 自定義新工具列案例:工作表目錄 484
22.2 彈出式工具列 485
22.2.1 創建彈出式工具列語法結構 485
22.2.2 創建一個彈出式工具列 486
22.2.3 創建三級工具列 486
22.3 特殊的工具列 487
22.3.1 創建可讀寫的彈出式工具列 487
22.3.2 利用工具列文字框查找數據 488
第 23章 創建新選單欄
23.1 選單基礎 490
23.1.1 選單的分類 490
23.1.2 創建選單基本語法 490
23.1.3 設計選單注意事項 491
23.2 創建新選單案例 491
23.2.1 創建關機與重啟兩個工作表選單 491
23.2.2 由用戶定義子選單容器 492
23.3 設計感應選單 493
23.3.1 在指定工作表才可用的選單 493
23.3.2 在指定區域才可用的選單 493
23.3.3 選擇圖表才出現的選單 494
第 24章 操作快捷選單
24.1 認識快捷選單 495
24.1.1 快捷選單的分類 495
24.1.2 獲取Excel所有快捷選單 495
24.1.3 Excel 2003和Excel 2007中快捷選單的差異 496
24.2 定製快捷選單 496
24.2.1 創建單元格右鍵子選單 496
24.2.2 設計左鍵快捷選單 497
24.2.3 打造最強大的單元格右鍵選單 498
24.2.4 在窗體中顯示快捷選單 500
第 25章 認識類和類模組
25.1 類模組基礎 502
25.1.1 類模組套用範圍 502
25.1.2 類模組事件 502
25.1.3 類模組與變數 503
25.2 類的套用 503
25.2.1 程式級事件:在標題處顯示工作簿路徑 503
25.2.2 對所有工作表的選區背景著色 505
25.2.3 為窗體的按鈕批量設定事件過程 506
25.2.4 開發一個顏色拾取器 507
第 26章 API的基本套用
26.1 API在窗體設計中的套用 509
26.1.1 按任意地方都可拖動的窗體 509
26.1.2 設計半圓形動畫窗體 510
26.1.3 資料錄入完整滑鼠才可能離開窗體的範圍限制 511
26.1.4 拖動窗體隨意修改窗體大小 513
26.1.5 設計百葉窗式動態窗體 514
26.1.6 在窗體中展示文字動畫 515
26.2 API的其他套用 516
26.2.1 傳送郵件 516
26.2.2 仿Photoshop設計彩蛋 517
26.2.3 讓ActiveX控制項在非設計模式下也能移動 518
26.2.4 將檔案刪除並存入資源回收筒 519
第 27章 VBA與註冊表
27.1 VBA對註冊表的控制方式 521
27.1.1 什麼是註冊表 521
27.1.2 VBA操作註冊表的方法 522
27.1.3 VBA操作註冊表的優缺點 523
27.1.4 借用腳本實現註冊表的自由控制 523
27.2 註冊表的套用 523
27.2.1 記錄當前工作簿最後一次打開時間 524
27.2.2 限制工作簿使用次數 524
27.2.3 讓零值顯示設定適用所有工作表 525
27.2.4 禁止使用隨身碟 526
第 28章 VBE的對象模型與對象控制
28.1 準備工作 527
28.1.1 設定Excel選項 527
28.1.2 引用對象庫 528
28.2 認識VBE的對象模型 528
28.2.1 VBE對象模型的層次結構 528
28.2.2 VBE對象介紹 529
28.2.3 如何引用VBE對象 530
28.2.4 羅列當前工程中所有組件及其類型 530
28.3 VBE對象的控制 531
28.3.1 羅列指定模組中所有過程的名稱 531
28.3.2 羅列所有模組代碼總行數 533
28.3.3 利用代碼添加模組 534
28.3.4 用代碼添加工作簿事件代碼 534
28.3.5 創建ActiveX控制項且編寫單擊事件代碼 535
28.3.6 刪除當前工作簿所有代碼及窗體、模組組件 536
28.3.7 判斷工作簿是否有宏代碼 537
28.3.8 全自動生成窗體、控制項及事件代碼 538
第 29章 程式開發思想
29.1 開發人員自我定位 540
29.1.1 區別開發人員與套用人員 540
29.1.2 開發人員基本條件 540
29.2 開發外掛程式與普通VBA編程的區別 541
29.3 如何開發最佳應用程式 541
29.3.1 羅列應用程式需具備的功能 541
29.3.2 與終端用戶交流 542
29.3.3 規劃程式結構 542
29.3.4 設定友好的界面 542
29.3.5 提升程式通用性 542
29.3.6 注重程式效率 543
29.3.7 提供防錯機制 543
第 30章 開發VBE外掛程式
30.1 選單定製基礎 544
30.1.1 認識命令欄對象 544
30.1.2 創建命令欄基本語法 544
30.1.3 羅列VBE中所有選單與子選單 545
30.1.4 創建菜工具列以統計模組中過程相關信息 546
30.2 開發VBA外掛程式工具箱 547
30.2.1 開發外掛程式的準備工作 548
30.2.2 羅列外掛程式功能 548
30.2.3 開發代碼編號工具 548
30.2.4 開發代碼美化工具 550
30.2.5 開發代碼導出工具 552
30.2.6 開發代碼清除工具 553
30.2.7 開發代碼減肥工具 554
30.2.8 編寫選單 556
30.2.9 發布外掛程式 558
第 31章 開發xlam與COM載入項外掛程式
31.1 關於載入宏 560
31.1.1 載入宏的特點 560
31.1.2 為什麼使用載入宏 561
31.1.3 載入宏管理器 561
31.1.4 內置載入宏的載入與使用 562
31.1.5 安裝與卸載自定義載入宏 562
31.2 關於載入項 562
31.2.1 載入項的分類 563
31.2.2 載入項的開發方式 563
31.2.3 兩種載入項的安裝方式 563
31.3 準備編寫XLAM載入宏 565
31.3.1 認識Excel工作簿的格式 565
31.3.2 生成載入宏的兩種方法 566
31.4 開發集公農曆於一體的日期輸入器 566
31.4.1 確認程式需具備的功能 566
31.4.2 定義公曆轉農曆的函式 566
31.4.3 設計日期輸入器窗體 567
31.4.4 編寫窗體初始化代碼 568
31.4.5 實現輸入器與工作表互動 570
31.4.6 設計幫助 572
31.4.7 定製選單 575
31.4.8 測試並發布外掛程式 575
31.5 利用VB 6.0編寫COM載入項 576
31.5.1 COM載入項開發基礎 576
31.5.2 安裝VB 6.0企業版 576
31.5.3 開發COM載入項基本步驟 577
31.6 開發重複值控制器 579
31.6.1 確認外掛程式所需功能 580
31.6.2 建立VB工程 580
31.6.3 編寫選單代碼及回響事件 580
31.6.4 編寫重複值控制主程式 581
31.6.5 發布載入項並安裝調試 582
第 32章 開發“Excel百寶箱”
(以下內容見光碟)
32.1 程式規劃 584
32.1.1 了解終端用戶需求 584
32.1.2 確認外掛程式功能表 585
32.1.3 規劃外掛程式結構 585
32.2 財務工具箱 586
32.2.1 製作工資條頭 586
32.2.2 根據工資計算所需鈔票張數 588
32.2.3 小寫金額轉大寫 591
32.2.4 工作簿與工作表合併 592
32.2.5 工作表拆分 602
32.2.6 工作簿拆分 605
32.2.7 複選框工具 609
32.2.8 文本與數據轉換 612
32.3 合併工具箱 613
32.3.1 合併數據並居中及其還原 614
32.3.2 合併數據並複製 615
32.3.3 取消區域合併填充原合併值 617
32.3.4 可還原的合併居中 618
32.3.5 合併列中相同數據及還原 620
32.4 批註工具箱 621
32.4.1 批註管理器 622
32.4.2 添加個性化批註 625
32.4.3 建立圖片批註 627
32.4.4 批量添加右列內容為批註 628
32.4.5 批量導入同名照片到批註 629
32.5 圖片工具箱 631
32.5.1 將選區轉換成圖片 631
32.5.2 批量導入圖片 633
32.5.3 批量導出圖片到硬碟 635
32.6 開發函式 637
32.6.1 開發自定義函式 637
32.6.2 設計函式幫助 656
32.7 定製百寶箱幫助 659
32.7.1 定製百寶箱幫助 659
32.7.2 信息反饋 664
32.8 定製多級選單並發布 666
32.8.1 定製選單 666
32.8.2 發布 667
32.8.3 小結 668