編輯推薦
本書針對Excel*新版本做瞭全麵更新,內容新穎,助你開發大型和小型Excel應用。
本書直抒主題,以讀者為中心,摒棄華而不實的、冗長的解釋,呈現緊貼實用的示例、注意事項和訣竅,提供大量代碼和示例模闆,助你從普通數據分析人員蛻變為Excel編程專傢。
內容簡介
藉助VBA成為Excel高級用戶
學習運用VBA語言的強大功能,將自己的Excel技能提升到全新水平!綜閤性指南 中文版Excel 2016高級VBA編程寶典(第8版) 將幫助你實現數據處理自動化,並開發齣功能完備的Excel程序。本書針對Excel*新版本做瞭全麵更新,內容新穎,助你開發大型和小型Excel應用。
本書直抒主題,以讀者為中心,摒棄華而不實的、冗長的解釋,呈現緊貼實用的示例、注意事項和訣竅,提供大量代碼和示例模闆,助你從普通數據分析人員蛻變為Excel編程專傢。
作者簡介
MichaelAlexander是微軟認證的應用開發人員,已撰寫多本MicrosoftAccess和Excel書籍。Michael的個人網站是datapigtechnologies.com。
DickKusleika在最近15年的時間裏,一直通過在綫論壇、博客、圖書和會議等渠道傳播知識,幫助用戶深入瞭解和最大限度地運用MicrosoftOffice産品。
目錄
第Ⅰ部分 Excel VBA基礎知識
第1章 電子錶格應用開發入門 3
1.1 關於電子錶格應用 3
1.2 應用開發的步驟 4
1.3 確定用戶的需求 4
1.4 對滿足這些需求的應用
進行規劃 5
1.5 確定最適用的用戶界麵 6
1.5.1 自定義功能區 7
1.5.2 自定義快捷菜單 7
1.5.3 創建快捷鍵 7
1.5.4 創建自定義對話框 8
1.5.5 在工作錶中使用
ActiveX控件 8
1.5.6 開始開發工作 10
1.6 關注最終用戶 10
1.6.1 測試應用 10
1.6.2 應用的安全問題 11
1.6.3 如何讓應用程序看起來更
簡明美觀 13
1.6.4 創建用戶幫助係統 13
1.6.5 將開發成果歸檔 14
1.6.6 給用戶發布應用程序 14
1.6.7 在必要時對應用進行更新 14
1.7 其他開發問題 14
1.7.1 用戶安裝的Excel版本 15
1.7.2 語言問題 15
1.7.3 係統速度 15
1.7.4 顯示模式 15
第2章 VBA概述 17
2.1 宏錄製器 17
2.1.1 創建你的第一個宏 17
2.1.2 比較宏錄製的絕對模式和
相對模式 20
2.1.3 關於宏錄製的其他概念 24
2.2 Visual Basic編輯器概述 28
2.2.1 瞭解VBE組件 28
2.2.2 使用工程資源管理器 29
2.2.3 使用代碼窗口 31
2.2.4 自定義VBA環境 33
2.2.5 “編輯器格式”選項卡 34
2.2.6 “通用”選項卡 35
2.2.7 “可連接的”選項卡 35
2.3 VBA的基礎知識 36
2.3.1 瞭解對象 36
2.3.2 瞭解集閤 37
2.3.3 瞭解屬性 37
2.4 使用Range對象 40
2.4.1 找到Range對象的屬性 41
2.4.2 Range屬性 41
2.4.3 Cells屬性 42
2.4.4 Offset屬性 44
2.5 需要記住的基本概念 45
2.6 學習更多信息 46
2.6.1 閱讀本書剩餘的章節 47
2.6.2 讓Excel來幫助編寫宏 47
2.6.3 使用幫助係統 47
2.6.4 使用對象瀏覽器 47
2.6.5 從網上獲取 48
2.6.6 利用用戶論壇 49
2.6.7 訪問專傢博客 49
2.6.8 通過YouTube查找視頻 50
2.6.9 通過Microsoft OfficeDev
Center獲取信息 50
2.6.10 解析其他的Excel文件 50
2.6.11 谘詢周圍的Excel人纔 50
第3章 VBA編程基礎 51
3.1 VBA語言元素概覽 51
3.2 注釋 53
3.3 變量、數據類型和常量 54
3.3.1 定義數據類型 55
3.3.2 聲明變量 56
3.3.3 變量的作用域 58
3.3.4 使用常量 61
3.3.5 使用字符串 62
3.3.6 使用日期 62
3.4 賦值語句 63
3.5 數組 65
3.5.1 聲明數組 66
3.5.2 聲明多維數組 66
3.5.3 聲明動態數組 66
3.6 對象變量 67
3.7 用戶自定義的數據類型 68
3.8 內置函數 69
3.9 處理對象和集閤 71
3.9.1 With-End With結構 72
3.9.2 For Each-Next結構 72
3.10 控製代碼的執行 74
3.10.1 GoTo語句 74
3.10.2 If-Then結構 75
3.10.3 Select Case結構 78
3.10.4 指令塊的循環 82
第4章 VBA的子過程 89
4.1 關於過程 89
4.1.1 子過程的聲明 90
4.1.2 過程的作用域 90
4.2 執行子過程 91
4.2.1 通過“運行子過程/用戶
窗體”命令執行過程 92
4.2.2 從“宏”對話框執行過程 92
4.2.3 用Ctrl+快捷鍵組閤
執行過程 93
4.2.4 從功能區執行過程 94
4.2.5 從自定義快捷菜單中
執行過程 94
4.2.6 從另一個過程中執行過程 95
4.2.7 通過單擊對象執行過程 98
4.2.8 在事件發生時執行過程 99
4.2.9 從“立即窗口”執行過程 100
4.3 嚮過程中傳遞參數 100
4.4 錯誤處理技術 103
4.4.1 捕獲錯誤 104
4.4.2 錯誤處理示例 105
4.5 使用子過程的實際示例 108
4.5.1 目標 108
4.5.2 工程需求 108
4.5.3 已經瞭解的信息 108
4.5.4 解決方法 109
4.5.5 初步的錄製工作 109
4.5.6 初始設置 111
4.5.7 代碼的編寫 112
4.5.8 排序過程的編寫 112
4.5.9 更多測試 116
4.5.10 修復問題 117
4.5.11 實用程序的可用性 120
4.5.12 對工程進行評估 121
第5章 創建函數過程 123
5.1 子過程與函數過程的比較 123
5.2 為什麼創建自定義的函數 124
5.3 自定義函數示例 124
5.3.1 在工作錶中使用函數 125
5.3.2 在VBA過程中使用函數 125
5.3.3 分析自定義函數 126
5.4 函數過程 128
5.4.1 函數的作用域 129
5.4.2 執行函數過程 129
5.5 函數過程的參數 131
5.6 函數示例 132
5.6.1 無參數的函數 132
5.6.2 帶有一個參數的函數 134
5.6.3 帶有兩個參數的函數 136
5.6.4 使用數組作為參數的函數 137
5.6.5 帶有可選參數的函數 138
5.6.6 返迴VBA數組的函數 140
5.6.7 返迴錯誤值的函數 142
5.6.8 帶有不定數量參數的函數 144
5.7 模擬Excel的SUM函數 145
5.8 擴展後的日期函數 148
5.9 函數的調試 149
5.10 使用“插入函數”對話框 150
5.10.1 使用MacroOptions方法 151
5.10.2 指定函數類彆 152
5.10.3 手動添加函數說明 153
5.11 使用加載項存儲自定義函數 154
5.12 使用Windows API 154
5.12.1 Windows API示例 155
5.12.2 確定Windows目錄 155
5.12.3 檢測Shift鍵 157
5.12.4 瞭解有關API函數的
更多信息 158
第6章 瞭解Excel事件 159
6.1 Excel可以監視的事件類型 159
6.1.1 瞭解事件發生的順序 160
6.1.2 存放事件處理程序的位置 160
6.1.3 禁用事件 161
6.1.4 輸入事件處理代碼 162
6.1.5 使用參數的事件處理程序 163
6.2 工作簿級彆的事件 165
6.2.1 Open事件 165
6.2.2 Activate事件 166
6.2.3 SheetActivate事件 166
6.2.4 NewSheet事件 167
6.2.5 BeforeSave事件 167
6.2.6 Deactivate事件 167
6.2.7 BeforePrint事件 168
6.2.8 BeforeClose事件 169
6.3 檢查工作錶事件 171
6.3.1 Change事件 171
6.3.2 監視特定單元格區域的
修改 172
6.3.3 SelectionChange事件 177
6.3.4 BeforeDoubleClick事件 177
6.3.5 BeforeRightClick事件 178
6.4 監視應用程序事件 179
6.4.1 啓用應用程序級彆的事件 180
6.4.2 確定工作簿何時被打開 180
6.4.3 監視應用程序級彆的事件 181
6.5 訪問與對象無關聯的事件 182
6.5.1 OnTime事件 182
6.5.2 OnKey事件 184
第7章 VBA編程示例與技巧 189
7.1 通過示例學習 189
7.2 處理單元格區域 190
7.2.1 復製單元格區域 190
7.2.2 移動單元格區域 191
7.2.3 復製大小可變的
單元格區域 191
7.2.4 選中或者識彆各種類型的
單元格區域 193
7.2.5 調整單元格區域大小 194
7.2.6 提示輸入單元格中的值 195
7.2.7 在下一個空單元格中
輸入一個值 196
7.2.8 暫停宏的運行以便獲得
用戶選中的單元格區域 197
7.2.9 計算選中單元格的數目 199
7.2.10 確定選中的單元格
區域的類型 199
7.2.11 有效地循環遍曆選中的
單元格區域 201
7.2.12 刪除所有空行 204
7.2.13 任意次數地復製行 205
7.2.14 確定單元格區域是否包含
在另一個單元格區域內 206
7.2.15 確定單元格的數據類型 207
7.2.16 讀寫單元格區域 208
7.2.17 在單元格區域中寫入值的
更好方法 209
7.2.18 傳遞一維數組中的內容 211
7.2.19 將單元格區域傳遞給
Variant類型的數組 211
7.2.20 按數值選擇單元格 212
7.2.21 復製非連續的單元格
區域 213
7.3 處理工作簿和工作錶 215
7.3.1 保存所有工作簿 215
7.3.2 保存和關閉所有工作簿 216
7.3.3 隱藏除選區之外的區域 216
7.3.4 創建超鏈接內容錶 217
7.3.5 同步工作錶 218
7.4 VBA技巧 219
7.4.1 切換布爾類型的屬性值 219
7.4.2 顯示日期和時間 220
7.4.3 顯示友好時間 222
7.4.4 獲得字體列錶 223
7.4.5 對數組進行排序 224
7.4.6 處理一係列文件 225
7.5 用於代碼中的一些有用函數 227
7.5.1 FileExists函數 227
7.5.2 FileNameOnly函數 227
7.5.3 PathExists函數 228
7.5.4 RangeNameExists函數 228
7.5.5 SheetExists函數 229
7.5.6 WorkbookIsOpen函數 229
7.5.7 檢索已經關閉的
工作簿中的值 230
7.6 一些有用的工作錶函數 231
7.6.1 返迴單元格的格式信息 232
7.6.2 會說話的工作錶 233
7.6.3 顯示保存或打印文件的
時間 233
7.6.4 理解對象的父對象 234
7.6.5 計算介於兩個值之間的
單元格數目 235
7.6.6 確定行或列中最後一個
非空的單元格 236
7.6.7 字符串與模式匹配 237
7.6.8 從字符串中提取
第n個元素 238
7.6.9 拼寫齣數字 239
7.6.10 多功能函數 240
7.6.11 SHEETOFFSET函數 240
7.6.12 返迴所有工作錶中的
最大值 241
7.6.13 返迴沒有重復隨機整數
元素的數組 242
7.6.14 隨機化單元格區域 244
7.6.15 對單元格區域進行排序 245
7.7 Windows API調用 246
7.7.1 理解API聲明 246
7.7.2 確定文件的關聯性 247
7.7.3 確定默認打印機的信息 248
7.7.4 確定視頻顯示器的信息 249
7.7.5 讀寫注冊錶 250
第Ⅱ部分 高級VBA技術
第8章 使用透視錶 255
8.1 數據透視錶示例 255
8.1.1 創建數據透視錶 256
8.1.2 檢查錄製的數據
透視錶代碼 257
8.1.3 整理錄製的數據
透視錶代碼 258
8.2 創建更復雜的數據透視錶 260
8.2.1 創建數據透視錶的代碼 261
8.2.2 更復雜數據透視錶的
工作原理 262
8.3 創建多個數據透視錶 263
8.4 創建轉換的數據透視錶 266
第9章 使用圖錶 269
9.1 關於圖錶 269
9.1.1 圖錶的位置 269
9.1.2 宏錄製器和圖錶 270
9.1.3 Chart對象模型 270
9.2 創建嵌入式圖錶 271
9.3 在圖錶工作錶上創建圖錶 273
9.4 修改圖錶 273
9.5 使用VBA激活圖錶 274
9.6 移動圖錶 275
9.7 使用VBA使圖錶取消激活 276
9.8 確定圖錶是否被激活 276
9.9 從ChartObjects或Charts
集閤中刪除圖錶 277
9.10 循環遍曆所有圖錶 277
9.11 調整ChartObjects對象的
大小並對齊 280
9.12 創建大量圖錶 281
9.13 導齣圖錶 283
9.14 修改圖錶中使用的數據 285
9.14.1 基於活動單元格修改
圖錶數據 286
9.14.2 用VBA確定圖錶中
使用的單元格區域 287
9.15 使用VBA在圖錶上顯示
任意數據標簽 289
9.16 在用戶窗體中顯示圖錶 292
9.17 理解圖錶事件 295
9.17.1 使用圖錶事件的一個
示例 295
9.17.2 為嵌入式圖錶啓用事件 298
9.17.3 示例:在嵌入式圖錶上
使用圖錶事件 299
9.18 VBA製圖技巧 301
9.18.1 在整個頁麵上打印
嵌入式圖錶 301
9.18.2 創建未鏈接的圖錶 301
9.18.3 用MouseOver事件
顯示文本 303
9.18.4 滾動圖錶 305
9.19 使用迷你圖 307
第10章 與其他應用程序的交互 311
10.1 瞭解Microsoft Office
自動化 311
10.1.1 瞭解綁定概念 311
10.1.2 一個簡單的自動化示例 313
10.2 從Excel中自動執行
Access任務 314
10.2.1 從Excel中運行
Access查詢 314
10.2.2 從Excel運行Access宏 315
10.3 從Excel自動執行Word任務 316
10.3.1 將Excel數據傳遞給
Word文檔 316
10.3.2 模擬Word文檔的郵件
閤並功能 317
10.4 從Excel自動執行
PowerPoint任務 319
10.4.1 將Excel數據發送到
PowerPoint演示文稿中 319
10.4.2 將所有Excel圖錶發送到
PowerPoint演示文稿中 321
10.4.3 將工作錶轉換成PowerPoint
演示文稿 322
10.5 從Excel自動執行Outlook
任務 323
10.5.1 以附件形式發送活動
工作簿 324
10.5.2 以附件形式發送指定
單元格區域 324
10.5.3 以附件形式發送指定的
單個工作錶 326
10.5.4 發送給聯係人列錶中的
所有Email地址 327
10.6 從Excel啓動其他應用程序 328
10.6.1 使用VBA的Shell函數 328
10.6.2 使用Windows的ShellExecute
API函數 330
10.6.3 使用AppActivate語句 331
10.6.4 激活“控製麵闆”對話框 332
第11章 處理外部數據和文件 335
11.1 處理外部數據連接 335
11.1.1 手動創建連接 335
11.1.2 手動編輯數據連接 338
11.1.3 使用VBA創建動態連接 339
11.1.4 遍曆工作簿中的所有連接 340
11.2 使用ADO和VBA來提取
外部數據 342
11.2.1 連接字符串 342
11.2.2 聲明記錄集 343
11.2.3 引用ADO對象庫 344
11.2.4 以編程方式使用ADO
連接Access 344
11.2.5 對活動工作簿使用ADO 345
11.3 處理文本文件 348
11.3.1 打開文本文件 348
11.3.2 讀取文本文件 349
11.3.3 編寫文本文件 349
11.3.4 獲取文件序號 349
11.3.5 確定或設置文件位置 349
11.3.6 讀寫語句 350
11.4 文本文件操作示例 350
11.4.1 導入文本文件的數據 350
11.4.2 將單元格區域的數據
導齣到文本文件 351
11.4.3 將文本文件的內容導齣到
單元格區域 352
11.4.4 記錄Excel日誌的用法 353
11.4.5 篩選文本文件 354
11.5 執行常見的文件操作 354
11.5.1 使用與VBA文件
相關的指令 355
11.5.2 使用FileSystemObject
對象 359
11.6 壓縮和解壓縮文件 361
11.6.1 壓縮文件 362
11.6.2 解壓縮文件 363
第Ⅲ部分 操作用戶窗體
第12章 使用自定義對話框 367
12.1 創建用戶窗體之前需要
瞭解的內容 367
12.2 使用輸入框 367
12.2.1 VBA的InputBox函數 368
12.2.2 Excel的InputBox方法 370
12.3 VBA的MsgBox函數 373
12.4 Excel的GetOpenFilename
方法 377
12.5 Excel的GetSaveAsFilename
方法 380
12.6 提示輸入目錄名稱 380
12.7 顯示Excel的內置對話框 381
12.8 顯示數據記錄單 383
12.8.1 使得數據記錄單變得
可以訪問 383
12.8.2 通過使用VBA來顯示
數據記錄單 384
第13章 用戶窗體概述 385
13.1 Excel如何處理自定義
對話框 385
13.2 插入新的用戶窗體 386
13.3 嚮用戶窗體中添加控件 386
13.4 “工具箱”中的控件 387
13.4.1 復選框 387
13.4.2 組閤框 388
13.4.3 命令按鈕 388
13.4.4 框架 388
13.4.5 圖像 389
13.4.6 標簽 389
13.4.7 列錶框 389
13.4.8 多頁 389
13.4.9 選項按鈕 389
13.4.10 RefEdit 389
13.4.11 滾動條 390
13.4.12 數值調節鈕 390
13.4.13 TabStrip 390
13.4.14 文本框 390
13.4.15 切換按鈕 390
13.5 調整用戶窗體的控件 391
13.6 調整控件的屬性 393
13.6.1 使用“屬性”窗口 393
13.6.2 共同屬性 394
13.6.3 滿足鍵盤用戶的需求 396
13.7 顯示用戶窗體 397
13.7.1 調整顯示位置 398
13.7.2 顯示非模態的用戶窗體 398
13.7.3 顯示基於變量的用戶窗體 398
13.7.4 加載用戶窗體 399
13.7.5 關於事件處理程序 399
13.8 關閉用戶窗體 399
13.9 創建用戶窗體的示例 400
13.9.1 創建用戶窗體 401
13.9.2 編寫代碼顯示對話框 403
13.9.3 測試對話框 404
13.9.4 添加事件處理程序 405
13.9.5 完成對話框 406
13.10 理解用戶窗體的事件 407
13.10.1 瞭解事件 407
13.10.2 用戶窗體的事件 408
13.10.3 數值調節鈕的事件 408
13.10.4 數值調節鈕與文本框
配套使用 410
13.11 引用用戶窗體的控件 412
13.12 自定義“工具箱” 413
13.12.1 在“工具箱”中添加新頁 413
13.12.2 自定義或組閤控件 413
13.12.3 添加新的ActiveX控件 415
13.13 創建用戶窗體的模闆 415
13.14 用戶窗體問題檢測列錶 416
第14章 用戶窗體示例 417
14.1 創建用戶窗體式菜單 417
14.1.1 在用戶窗體中使用
命令按鈕 417
14.1.2 在用戶窗體中使用
列錶框 418
14.2 從用戶窗體選中單元格區域 419
14.3 創建歡迎界麵 421
14.4 禁用用戶窗體的關閉按鈕 423
14.5 改變用戶窗體的大小 424
14.6 在用戶窗體中縮放和滾動
工作錶 425
14.7 列錶框技巧 427
14.7.1 嚮列錶框控件中添加
條目 428
14.7.2 確定列錶框中選中的
條目 432
14.7.3 確定列錶框中的多個
選中條目 433
14.7.4 單個列錶框中的多個
列錶 434
14.7.5 列錶框條目的轉移 435
14.7.6 在列錶框中移動條目 436
14.7.7 使用多列的列錶框控件 438
14.7.8 使用列錶框選中
工作錶中的行 440
14.7.9 使用列錶框激活工作錶 442
14.7.10 通過文本框來篩選
列錶框 444
14.8 在用戶窗體中使用多頁控件 446
14.9 使用外部控件 448
14.10 使標簽動畫化 450
第15章 高級用戶窗體技術 453
15.1 非模態對話框 453
15.2 顯示進度條 457
15.2.1 創建獨立的進度條 458
15.2.2 集成到用戶窗體中的
進度條 461
15.2.3 創建非圖形化進度條 465
15.3 創建嚮導 467
15.3.1 為嚮導設置多頁控件 468
15.3.2 在嚮導用戶窗體中添加
按鈕 468
15.3.3 編寫嚮導按鈕的程序 468
15.3.4 編寫嚮導中的相關代碼 470
15.3.5 使用嚮導執行任務 471
15.4 模仿MsgBox函數 472
15.4.1 模仿MsgBox函數:
MyMsgBox函數的代碼 473
15.4.2 MyMsgBox函數的
工作原理 474
15.4.3 使用MyMsgBox函數 476
15.5 帶有可移動控件的用戶窗體 476
15.6 沒有標題欄的用戶窗體 477
15.7 使用用戶窗體模擬工具欄 479
15.8 使用用戶窗體來模仿
任務麵闆 481
15.9 可調整大小的用戶窗體 482
15.10 用一個事件處理程序處理
多個用戶窗體控件 485
15.11 在用戶窗體中選擇顔色 488
15.12 在用戶窗體中顯示圖錶 490
15.12.1 將圖錶保存為GIF文件 491
15.12.2 更改圖像控件的Picture
屬性 491
15.13 使用戶窗體半透明 491
15.14 用戶窗體上的數字推盤 493
15.15 用戶窗體上的電動撲剋 494
第Ⅳ部分 開發Excel應用程序
第16章 創建和使用加載項 497
16.1 什麼是加載項 497
16.1.1 加載項與標準工作簿的
比較 497
16.1.2 創建加載項的原因 498
16.2 理解Excel的加載項管理器 500
16.3 創建加載項 501
16.4 加載項示例 502
16.4.1 為加載項示例添加描述
信息 503
16.4.2 創建加載項 503
16.4.3 安裝加載項 504
16.4.4 測試加載項 505
16.4.5 發布加載項 505
16.4.6 修改加載項 505
16.5 比較XLAM和XLSM文件 506
16.5.1 XLAM文件中的VBA
集閤成員 506
16.5.2 XLSM和XLAM文件的
可見性 507
16.5.3 XLSM和XLAM文件的
工作錶和圖錶工作錶 507
16.5.4 訪問加載項中的VBA
過程 508
16.6 用VBA操作加載項 511
16.6.1 嚮AddIns集閤中添加項 511
16.6.2 從AddIns集閤中刪除項 512
16.6.3 AddIn對象屬性 513
16.6.4 作為工作簿訪問加載項 516
16.6.5 AddIn對象事件 516
16.7 優化加載項的性能 516
16.8 加載項的特殊問題 517
16.8.1 確保加載項已經安裝 517
16.8.2 從加載項中引用其他
文件 519
16.8.3 為加載項檢測適用的
Excel版本 519
第17章 使用功能區 521
17.1 功能區基礎 521
17.2 自定義功能區 522
17.2.1 嚮功能區中添加按鈕 523
17.2.2 嚮快速訪問工具欄中
添加按鈕 525
17.2.3 自定義功能區的局限性 526
17.3 創建自定義的功能區 527
17.3.1 將按鈕添加到現有的
選項卡中 527
17.3.2 嚮已有的選項卡中添加
復選框 532
17.3.3 功能區控件演示 535
17.3.4 dynamicMenu控件示例 542
17.3.5 關於自定義功能區的
其他內容 544
17.4 VBA和功能區 546
17.4.1 訪問功能區控件 546
17.4.2 使用功能區 546
17.4.3 激活選項卡 548
17.5 創建老式工具欄 549
17.5.1 Excel 2007及後續版本中
老式工具欄的局限性 549
17.5.2 創建工具欄的代碼 549
第18章 使用快捷菜單 553
18.1 命令欄簡介 553
18.1.1 命令欄的類型 553
18.1.2 列齣快捷菜單 554
18.1.3 引用命令欄 555
18.1.4 引用命令欄中的控件 555
18.1.5 命令欄控件的屬性 557
18.1.6 顯示所有的快捷菜單項 557
18.2 使用VBA自定義快捷菜單 559
18.2.1 快捷菜單和單文檔界麵 559
18.2.2 重置快捷菜單 561
18.2.3 禁用快捷菜單 562
18.2.4 禁用快捷菜單項 562
18.2.5 嚮“單元格”快捷菜單中
添加一個新項 563
18.2.6 嚮快捷菜單添加一個子
菜單 565
18.2.7 將快捷菜單限製到單個
工作簿 567
18.3 快捷菜單與事件 567
18.3.1 自動添加和刪除菜單 568
18.3.2 禁用或隱藏快捷菜單項 568
18.3.3 創建一個上下文相關的
快捷菜單 568
第19章 為應用程序提供幫助 571
19.1 Excel應用程序的“幫助” 571
19.2 使用Excel組件的幫助係統 573
19.2.1 為幫助係統使用
單元格批注 573
19.2.2 為幫助係統使用文本框 574
19.2.3 使用工作錶來顯示
幫助文本 575
19.2.4 在用戶窗體中顯示
幫助信息 576
19.3 在Web瀏覽器中顯示
“幫助” 580
19.3.1 使用HTML文件 580
19.3.2 使用一個MHTML文件 581
19.4 使用HTML幫助係統 582
19.4.1 使用Help方法來顯示
HTML幫助信息 585
19.4.2 將“幫助”文件與應用
程序相關聯 585
19.4.3 將一個幫助主題與一個
VBA函數相關聯 586
第20章 理解類模塊 589
20.1 什麼是類模塊 589
20.1.1 內置的類模塊 590
20.1.2 自定義類模塊 590
20.2 創建NumLock類 591
20.2.1 插入類模塊 591
20.2.2 給類模塊添加VBA代碼 592
20.2.3 使用CNumLock類 593
20.3 屬性、方法和事件編程 594
20.3.1 對象屬性編程 594
20.3.2 對象的方法編程 595
20.3.3 類模塊事件 596
20.4 QueryTable事件 596
20.5 創建存儲類的類 599
20.5.1 創建CSalesRep和
CSalesReps類 599
20.5.2 創建CInvoice和
CInvoices類 601
20.5.3 用對象填充父類 602
20.5.4 計算傭金 603
第21章 兼容性問題 605
21.1 什麼是兼容性 605
21.2 兼容性問題的類型 606
21.3 避免使用新功能 607
21.4 在Mac機器上是否可用 608
21.5 處理64位Excel 609
21.6 創建一個國際化應用程序 610
21.6.1 多語言應用程序 611
21.6.2 VBA語言的考慮 612
21.6.3 使用本地屬性 612
21.6.4 係統設置識彆 613
21.6.5 日期和時間設置 615
第Ⅴ部分 附錄
附錄A VBA語句和函數引用 619
前言/序言
對大多數人來講,想要學習ExcelVBA編程技術都起因於需要執行一些利用Excel的標準工具無法完成的任務。對於我們每個人來講,任務都各不相同。這任務可能是需要為數據集中的所有行自動創建單獨的工作簿,也可能是需要自動發送很多報告郵件。不管你麵對的是什麼樣的任務,基本上都可以肯定已經有人使用ExcelVBA來解決跟你一樣的問題瞭。
就ExcelVBA來講,最美妙的事莫過於你不是必須成為專傢後纔能解決問題。你可以為解決一個具體問題而學習相關知識,也可以為處理各種自動化場景而深入學習各種技巧。
無論你的目標如何,本書都可以幫助你駕馭VBA語言的強大功能來使任務自動化、工作更省心更有效率。
本書涵蓋的內容
本書主要介紹VBA(VisualBasicforApplications),這是一種構建於Excel(和其他MicrosoftOffice應用程序)中的編程語言。更具體地說,本書將展示如何編寫使Excel中各種任務自動化的程序。本書覆蓋瞭從錄製簡單的宏乃至創建復雜的、麵嚮用戶的應用程序和實用程序等所有內容。
你可以按自己所需來學習本書的內容。可以從頭讀到尾,也可以從中挑齣覺得對自己有用的部分。VBA編程通常都是麵嚮任務的,因此在麵對一個具有挑戰性的任務時,可以先從本書中查一查哪些章節是專門針對你所麵對的問題的。
本書並沒有涵蓋VSTO(VisualStudioToolsforOffice)中的內容。VSTO是一門較新技術,它使用瞭VisualBasic.NET和MicrosoftVisualC#。VSTO也可用於控製Excel和其他MicrosoftOffice應用程序。
你可能知道,Excel2016也可用於其他平颱。例如,你可以在瀏覽器中使用微軟的ExcelWebApp,甚至在iPad和平闆電腦上運行Excel。這些版本不支持VBA。也就是說,本書介紹的是針對Windows平颱的Excel2016桌麵版本。
本書讀者對象
本書並不是為Excel的初學者編寫的。如果讀者對使用Excel沒有任何經驗,那麼最好先閱讀Wiley齣版社齣版的JohnWalkenbach撰寫的《中文版Excel2016寶典》,該書全麵概括瞭Excel的所有功能,它是為各個層次的讀者服務的。
為發揮本書的最大功效,讀者應該是有一定使用經驗的Excel用戶。本書假設讀者已經掌握瞭如下技能:
●如何創建工作簿、插入工作錶、保存文件等
●如何在工作簿中導航
●如何使用Excel功能區用戶界麵
●如何輸入公式
●如何使用Excel的工作錶函數
●如何給單元格和單元格區域命名
●如何使用基本的Windows功能,例如文件管理方法和剪貼闆的使用
所需的資源
為充分學習本書的知識,應該安裝Excel的完整版。如果想要學習本書中的高級技術(如Excel)與其他Office程序之間的通信,你還需要安裝Office軟件。
雖然本書大部分內容都可在Excel前期版本上使用,但還是假定已安裝瞭Excel2016。如果你計劃開發用於Excel前期版本的應用程序,還是強烈建議你使用目標客戶所使用的前期版本。
你使用什麼版本的Windows並不太重要。隻要能運行Windows的計算機係統都沒問題,但最好還是使用內存大速度快的機器。因為Excel程序比較大,如果在速度慢內存小的係統上使用會令人崩潰。
本書沒有介紹適用於Mac計算機上的Excel版本。
本書約定
請花點時間閱讀本節內容,這裏介紹本書使用的一些約定。
Excel命令
Excel使用上下文相關的功能區係統。頂部的單詞(如“插入”、“視圖”等)稱為“選項卡”。單擊某個選項卡,圖標的功能區就將顯示最適閤當前任務的命令。每個圖標都有一個名稱,通常顯示在該圖標的旁邊或下方。圖標是按組排列的,組名顯示在圖標下方。
本書約定:先指明的是選項卡的名稱,隨後是組的名稱,最後是圖標的名稱。例如,用於處理單元格中自動換行的命令如下所示:
“開始”|“對齊方式”|“自動換行”
單擊第一個選項卡,即“文件”選項卡,將進入一個名為Backstage的新界麵。Backstage窗口的左側有一列命令。為瞭指明Backstage命令,先使用單詞“文件”,然後是命令名。例如,下麵的命令將顯示“Excel選項”對話框:
“文件”|“選項”
VBE命令
VBE是在其中使用VBA代碼的窗口。VBE使用傳統的“菜單和工具欄”界麵。下麵的命令指單擊“工具”菜單並選中“引用”菜單項:
“工具”|“引用”
鍵盤的約定
需要使用鍵盤來輸入數據。此外,使用鍵盤還可以直接操作菜單和對話框,如果雙手已經放到鍵盤上,那麼這種方法會更方便一些。
輸入
較長的輸入通常以等寬字體顯示在單獨一行中。例如,書中可能提示輸入以下公式:
=VLOOKUP(StockNumber,PriceList,2)
VBA代碼
本書包含許多VBA代碼片段以及完整的過程清單。每個清單以等寬字體顯示,每行代碼占據單獨一行(筆者直接從VBA模塊中復製這些清單,並把它們粘貼到瞭自己的字處理程序中)。為使代碼更易於閱讀,書中使用一個或多個製錶符進行縮進。縮進是可選的,但確實可以幫助限定一起齣現的語句。
當本書中的單獨一行放不下一行代碼時,本書使用標準的VBA續行符:在一行的結尾,采用空格後跟下劃綫字符的方式錶明代碼行延伸到瞭下一行。例如,下麵兩行是一條代碼語句:
columnCount=Application.WorksheetFunction._
CountA(Range("A:A"))+1
可按上麵的顯示把代碼輸入到兩行中,或者刪除下劃綫字符並把代碼輸入到一行中。
函數、文件名和命名單元格區域
Excel的工作錶函數以大寫字母顯示,如“在單元格C20中輸入一個SUM公式”。對於VBA過程名、屬性、方法和對象,本書經常混閤使用大寫和小寫字母以便讀者閱讀這些名稱。
圖標的含義
本書使用一些圖標來引起讀者的注意,告訴讀者這些信息非常重要。
注意使用“注意”圖標來告訴讀者這些信息很重要,也許是有助於讀者掌握隨後任務的概念,或是有助於理解後麵資料的一些基礎知識。
提示“提示”圖標指齣更有效的工作方式或可能不是很明顯的方法。
示例下載這類圖標錶明示例文件可在下載的示例文件包中找到。具體說明參見前言中的“關於下載的示例文件包”一節。
警告“警告”圖標錶明在操作時不小心可能會導緻齣現問題。
交叉參考這類圖標錶明請讀者參閱其他章節中關於某個主題的詳細信息。
本書的組織結構
本書的章節分為5個主要部分。
第I部分ExcelVBA基礎知識
第I部分介紹ExcelVBA,為創建和管理Excel子例程和函數提供編程基礎知識。第1章全麵介紹Excel應用開發方麵的各種概念。第2章到第6章討論在進行VBA編程時需要瞭解的各種知識。第7章則列舉許多有用的示例助你鞏固前麵所學的VBA知識點。
第II部分高級VBA技術
第Ⅱ部分涵蓋一些VBA高級編程技術。第8章和第9章討論如何使用VBA來處理透視錶和圖錶(包括迷你圖)。第10章討論在與其他應用程序(如Word和Outlook)交互時所采用的各種技術。第11章介紹如何處理文件和外部數據源。
第III部分操作用戶窗體
該部分的4章內容主要介紹自定義對話框(也稱為用戶窗體)。第12章介紹創建自定義用戶窗體的一些內置方法。第13章介紹用戶窗體以及可供使用的各種控件。第14章和第15章則列舉從基本到高級的自定義對話框的大量示例。
第IV部分開發Excel應用程序
該部分講述創建麵嚮用戶的應用程序的重要內容。第16章手把手教你創建加載項。第17章和第18章討論如何修改Excel的功能區和快捷菜單。第19章介紹嚮應用程序提供在綫幫助的幾種不同方法。第20章展示如何開發麵嚮用戶的應用程序。第21章探討在進行ExcelVBA編程時與兼容性相關的一些信息。
第V部分附錄
第V部分包含瞭1個附錄。附錄A是一份參考指南,列齣作為VBA中關鍵字的所有語句和函數。
關於下載的示例文件包
本書中討論過的幾乎所有知識都配有示例。可以下載本書中所包含的很多有用示例。
本書的配書網站是www.wiley.com/go/excel2016powerprogramming。
也可登錄www.tupwk.com.cn/downpage下載相關內容。或者掃描本書封底的二維碼直接下載。
關於PowerUtilityPakOffer
PowerUtilityPak軟件收集瞭很多有用的Excel實用程序和許多新的工作錶函數。
你可以花點錢購買該産品的完整VBA源代碼。研究這些代碼是學習一些重要編程技巧的極佳方式。
該軟件作者JohnWalkenbach的網站上還提供瞭PowerUtilityPak軟件的30天試用版,下載地址為:
http://spreadsheetpage.com
如果覺得該軟件有用,可憑票證購買,購買有優惠。