Excel 2010 VBA入門與提高

事件※...............................188※啟用Excel 控制項※............................362※Excel 控制項的屬性........................364※ActiveX

圖書信息

圖書系列:Excel疑難千尋千解叢書
書名:Excel 2010 VBA入門與提高
宣傳語:ExcelTipnet出品,微軟全球最有價值專家力作,叢書累計銷售超過15萬冊。數百個真實案例解答,數十名資深專家幫你由淺入深輕鬆搞定VBA。/京東:最有價值專家力作,叢書累計銷售超過20萬冊
作者:黃朝陽 主編
ISBN:978-7-121-22462-1
出版時間:2014年3月出版
定價:79.00元
頁數:524頁
開本:16開

《Excel 2010 VBA入門與提高》編輯推薦

感謝您選擇“Excel 疑難千尋千解”叢書之《Excel 2010 VBA 入門與提高》。“Excel疑難千尋千解”叢書是由Excel技巧網的負責人、微軟最有價值專家(MVP)黃朝陽先生策劃並組織編寫的一套叢書。
《Excel 2010 VBA入門與提高》由 153 個實用的案例構成,由淺入深、由易到難地向您展示 VBA 在實際工作中的套用。《Excel 2010 VBA入門與提高》是 VBA 入門與提高的教材,其宗旨在於不但介紹如何編寫 VBA 程式,更著重介紹如何編寫 VBA 程式解決實際工作的疑難,以及對同類的問題提供解決思路。
《Excel 2010 VBA入門與提高》內容提要
《Excel 2010 VBA入門與提高》著重於Excel VBA 的基礎知識和技巧,通過153 個實例為讀者展示套用VBA 解決實際問題的思路和方法,並展示了常規VBA 數據處理的要點,幫助讀者學會解決實際問題的思考方式。閱讀《Excel 2010 VBA入門與提高》後,讀者可以掌握VBA 的基本語法、數據處理、自定義函式的編寫、功能區設計等重要技術,並將其套用於實際工作中,從而極大地提升工作效率和數據處理的正確性。
《Excel 2010 VBA入門與提高》的每個案例採取疑難描述、解決方案、操作方法、原理分析、知識擴展五個步驟進行講解,力圖在解決問題的同時讓讀者可以通曉其思路和原理。所有的案例均在Windows 7 環境下使用Excel 2010編寫完成並通過測試,其中的絕大部分代碼可適用於Excel 2003 和Excel 2007。
《Excel 2010 VBA入門與提高》是“Excel 疑難千尋千解”叢書之一,適合有意學習VBA 或者已經開始學習VBA 的初學者,也可以作為VBA 熟練開發者的參考書。

目錄

註:因百度百科詞條長度限制,故對目錄做略微刪減,詳細目錄請參見豆瓣讀書
第1 章 認識VBA.......................1
第1 節 認識宏.......................1
第2 節 認識VBE..........................15
第3 節 VBA 代碼編寫及幫助信息.....................18
第4 節 VBA 基礎........................26
第5 節 練習與思考...............................55
第2 章 數據的基本處理.......................56
第1 節 單元格的選取與賦值....................................56
第2 節 單元格的格式設定....................................75
疑難30 如何快速設定標題行格式..................75
※With 語句※......................................76
※With 語句的嵌套※..........................76
※Interior 對象※..................................77
※Font 對象※......................................78
※單元格的對齊方式※.......................78
※Selection 對象※...............................78
※利用錄製宏獲取格式設定代碼※............79
※通用的格式設定對象※...................79
疑難31 如何批量生成上標..............................79
※Characters 對象※.............................80
※Font 對象的 Superscript 屬性※...............80
※設定Characters 對象Font 的注意事項※................80
※Characters 屬性的通用性※................81
疑難32 如何快速將列進行分組......................81
※Columns 對象和Rows 對象※...............82
※單列和單行的表示※.......................82
※多列和多行的表示※.......................82
※Group 方法和Ungroup 方法※................82
※單元格對象的EntireColumn 屬性和EntireRow 屬性※..................82
※單元格區域的Columns 屬性和Rows 屬性※...................83
※Outline 對象※..................................84
疑難33 如何批量合併相同的單元格..............84
※Range 的Merge 方法合併單元格※...............85
※VBA 運行時關閉警告※..................85
※多行中相同的內容處理※..................86
疑難34 如何創建圖片批註..............................86
※批註(Comment)對象※..................87
※批註的添加與刪除※.......................87
※FillFormat 對象※.............................88
※On Error 語句※...............................88
第3 節 單元格的定位與查找...............................89
疑難35 如何利用VBA 程式定義條件格式.............89
※VBA 條件格式的原理※........................90
※表示整行的方法※...........................91
※日期函式DateSerial※.....................91
※利用工作表事件實時設定格式※......91
疑難36 如何一次性替換所有的錯誤值.................91
※Range 對象的Find 方法※..................92
※參數省略表示法※...........................93
※查找格式※.......................................94
※使用Is Nothing 判斷對象是否初始化※................94
※IsError 函式※..................................94
※SpecialCells 方法※..........................95
※Find 方法的一般形式※...................96
※CVErr 函式※...................................97
疑難37 如何獲取最後一行數據的行數..........97
※使用Find 方法查找最後的單元格※.....................99
※Find 方法按行查找和按列查找的區別※.........................99
※獲取工作表總行數※.....................100
※單元格對象的End 屬性※.............101
※End 屬性的局限性※.....................101
※其他獲取最後數據行行號的方法※......................102
疑難38 如何按顏色查找單元格....................102
※單元格對象的Clear 方法※..........103
※動態表示數據區域※.....................104
※單元格對象的Copy 方法※..........104
※單元格對象的選擇性貼上(PasteSpecial)方法※......................104
第4 節 數據的整理...............................................105
疑難39 如何按條件隱藏數據行....................106
※行和列的隱藏※.............................107
※單元格對象的AutoFilter(自動篩選)方法※.............107
※單元格對象的AdvancedFilter(高級篩選)方法※.........................109
疑難40 如何批量刪除空行............................109
※單元格刪除Delete 方法※............. 110
※單元格刪除的通用算法※.................. 110
※利用Union 獲取整個單元格區域進行統一操作※.................... 111
※Union 方法的注意事項※.......................... 111
※單元格插入Insert 方法※.............................. 112
疑難41 如何實現逐行輸入............................ 112
※Protect 方法和Unprotect 方法※............... 113
※單元格的Locked 屬性※........................ 114
※允許VBA 修改保護後的工作表※.......... 114
疑難42 如何用VBA 創建下拉列表........................ 115
※Validation 對象※........................... 115
※Validation 對象的Add 方法※............. 116
疑難43 如何使用VBA 對數據按自定義序列進行排序...................... 117
※單元格對象的Sort 方法※.................. 118
※添加和刪除自定義序列CustomList ※........................... 119
※使用自定義序列排序※....................... 119
※Sort 對象※.....................................120
※排序欄位SortField※........................120
※按顏色排序※.................................121
※設定排序區域SetRange 方法※.............121
第5 節 練習與思考...............................................121
第3 章 VBA 常用函式和語句................................122
第1 節 數學函式....................................122
疑難44 如何用VBA 進行四捨五入.....................122
※VBA 的Round 函式※......................123
※VBA 的Round 函式與工作表Round 函式的區別※..............123
※在Office 軟體中使用自定義函式替代VBA 的Round 函式※................125
疑難45 如何隨機篩選指定個數的記錄....................125
※隨機數Rnd 函式※........................126
※不重複地挑選數據※.....................127
※Rnd 函式語法※.............................127
※偽隨機數概念※.............................127
※Randomize 語句※..........................127
疑難46 如何利用VBA 轉換十六進制數字............127
※VBA 的Hex 函式※.......................128
※利用工作表函式進行進制轉換※.................128
※以文本形式表示數字※.................129
※單元格的Prefix 屬性與Excel 的TransitionNavigKeys 屬性※........129
※其他進制數字在VBA 中的表示方法※..............129
第2 節 文本函式...................................................129
疑難47 如何判斷某文本中是否包含指定字元.....................129
※Instr 函式※....................................130
※InstrRev 函式※..............................131
疑難48 如何批量替換文本中的指定字元............131
※Replace 函式※...............................132
※單元格對象的Replace 方法※.............133
疑難49 如何根據身份證號碼判斷性別.............133
※Left、Right 和Mid 函式※.....................135
※Len 函式※.....................................135
疑難50 如何替換文本中指定位置的字元...............135
※MID 語句※....................................136
※使用MID 語句的注意事項※...................136
※MID 語句的優勢和局限性※..............137
第3 節 日期和時間函式......................................137
疑難51 如何獲取和設定計算機中的當前日期.....................137
※Date 函式和Date 語句※....................138
※DateSerial 函式※...........................138
※更改時間及日期的限制※...........................139
※Time 函式和Time 語句※......................139
※Now 函式※....................................139
※VBA 中日期的實質※....................139
疑難52 如何計算契約到期日期....................140
※DateAdd 函式※.............................140
疑難53 如何提取身份證號碼中的出生日期並計算年齡.............141
※DateDiff 函式※..............................142
※DateDiff 函式中interval 參數“w”和“ww”的區別※...............143
※VBA 的DateDiff 函式和工作表函式DateDif 的區別※..............143
疑難54 如何將日期轉換成英文格式............144
※Format 函式※................................145
※特殊的英文格式日期※.................146
※使用DatePart 函式獲取日期信息※...........................146
第4 節 其他常用函式和語句.............................147
疑難55 如何求得文本計算式的計算結果..........................147
※去除有規律但內容不定的文本※...............148
※String 函式※..................................148
※Evaluate 方法計算表達式的值※....................149
※利用VBScript 的Eval 函式計算表達式的值※.................149
疑難56 如何獲取當前Windows 登錄用戶名.............149
※Environ 函式※...............................150
※獲取所有的系統環境變數※.........150
疑難57 如何為宏創建快捷鍵........................150
※Application.OnKey 方法※.............151
※Application.OnKey 方法的注意事項※...............152
※Application.SendKeys 方法※........152
疑難58 如何定時運行程式............................152
※Application.OnTime 方法※...........153
※使用Application.OnTime 重複執行程式※....................154
※取消Application.OnTime 定時器的方法※......................154
疑難59 如何用VBA 在工作表中創建檔案清單.............................154
※Dir 函式※......................................155
※Dir 函式查找路徑下所有的檔案※................156
※GetAttr 函式獲取檔案屬性※..................156
※SetAttr 語句修改檔案屬性※...................156
疑難60 如何用VBA 將檔案複製到另一個資料夾下並改名..............156
※FileCopy 語句※.............................158
※Name…As 語句※..........................158
第5 節 練習與思考...............................................158
第4 章 多表數據處理..............................................159
第1 節 跨工作表的數據處理.............................159
疑難61 如何按模板快速生成指定數量的工作表.............................159
※工作表對象(Worksheet)及其表示方法※........................161
※工作表集合和工作表※.................162
※工作表常用的基本屬性※.............162
※工作表的添加與複製※.................163
※工作表對象(Worksheet)與單元格對象(Range)的關係※..............163
※工作表的刪除※.............................164
※Application.DisplayAlerts 屬性※.......164
疑難62 如何進行跨表數據查詢....................165
※跨表操作單元格※.........................166
※連續查找功能※.............................166
疑難63 如何進行跨表數據錄入....................167
※ListObject 對象※...........................168
※ListObject 對象的表示方法※.................169
※ListColumn 對象※.........................169
※向ListObject 中添加新數據※......170
※使用VBA 添加ListObject 對象※.......171
※Excel 中數據存儲的結構※...........171
疑難64 如何按照關鍵字批量創建超連結...............173
※Hyperlink 對象※............................174
※創建超連結※.................................175
※刪除超連結及訪問超連結※.........175
※創建超連結打開指定的宏代碼※.......175
第2 節 跨工作簿的數據處理.............................175
疑難65 如何將多個工作表保存至單獨的工作簿中.....................176
※工作簿對象(Workbook)及其表示方法※.........................177
※Application、Workbook、Worksheet 和Range 的關係※.............177
※工作簿(Workbook)對象的常用屬性※..........................178
※工作簿的新建和保存※.................178
※獲取當前檔案的目錄※.................180
※跨工作簿複製工作表※.................180
※使用Application.PathSeparator 獲取系統路徑分隔設定※..........180
※SaveAs 和Save 的區別※..............180
疑難66 如何讀取其他工作簿的數據............181
※打開關閉的工作簿※.....................182
疑難67 如何導入多個工作簿中的工作表...........183
※導入多個工作簿中的工作表※.........185
※Application.ScreenUpdating 屬性※...............185
疑難68 如何將當前工作簿備份至指定目錄...........185
※工作簿對象(Workbook)的SaveCopyAs 方法※..............186
※SaveCopyAs 方法和SaveAs 方法的區別※......................186
第3 節 工作表和工作簿的事件程式................186
疑難69 動態改變當前選中行的顏色................186
※事件的概念※.................................187
※Worksheet 的Selection_Change 事件※...............................188
※啟用Excel 的事件※......................188
※工作表事件一覽※.........................188
疑難70 如何實現雙擊標題行即對該列降序排序...........................189
※工作表雙擊事件(BeforeDoubleClick)※.......................189
疑難71 如何完善數據有效性驗證......................190
※工作表對象的Change 事件※...............191
※判斷數據是否符合有效性設定※.......................191
※Change 事件的缺陷※....................191
※利用VBA 撤銷操作※...................192
※事件循環※.....................................192
※禁用事件※.....................................193
疑難72 如何動態隱藏工作表........................193
※工作表(Worksheet)對象的Select 方法※......................194
※工作表激活事件(Activate)和失去激活狀態事件(Deactivate)※.........196
※工作簿事件※.................................197
※類模組和Me 變數※......................198
疑難73 如何實現必填數據為空則無法保存..............199
※工作簿保存事件(BeforeSave)※................200
疑難74 如何進行個性化的工作表保護...........200
※工作簿的Workbook_SheetChange 事件※..........................202
※工作簿的Workbook_ Activate 事件※..................................202
※事件的組合※.................................203
疑難75 如何實現用戶登錄機制....................203
※工作簿打開事件(Open)※........205
※登錄的機制※.................................205
※auto_open 和auto_close※.............206
第4 節 練習與思考...............................................206
第5 章 數據處理的綜合套用.................................207
第1 節 計算及統計...............................................207
疑難76 如何計算個人所得稅........................207
※個人所得稅計算的步驟※.............209
※實現簡單計算的思考步驟※..........209
疑難77 如何進行銷售合計匯總....................209
※使用循環結合工作表函式進行數據合計※........................210
※行循環結構的建立※..................... 211
※列循環結構的建立※..................... 211
※多層嵌套循環結構的建立※.........213
※循環的簡化※.................................215
※以編程的方式思考問題※.............215
疑難78 如何將15 位身份證號碼升為18 位........215
※身份證號碼解讀※.........................216
※利用字元串截取進行查詢※.........217
第2 節 數據查詢與匯總......................................217
疑難79 如何羅列滿足條件的所有數據........217
※內嵌分支的循環結構※.................219
※羅列數據※.....................................219
※循環結構建立的誤區※.................219
疑難80 如何在多個工作表中查找指定的數據.............................219
※多表查詢※.....................................221
疑難81 如何獲取不重複的數據....................221
※去除重複值(RemoveDuplicates)方法※.........................222
※使用VBA 去除重複值※...............224
※巧用Exit 語句退出循環以加快速度※................224
※循環中判斷條件的確立※.............224
※使用Find 方法代替循環遍歷查找※..................................225
疑難82 如何對比兩個表的數據....................225
※兩表比較的步驟※.........................227
疑難83 如何按單列匯總數據........................227
※按單列匯總數據的步驟※.............229
※可互換的循環嵌套※.....................229
※多個循環結構的合併※.................229
※學會簡單直接的思考方式※...............231
疑難84 如何按多列匯總數據........................231
※按多列匯總數據的步驟※.............233
疑難85 如何製作多級下拉列表....................233
※創建多級下拉列表的思考步驟※.......235
疑難86 如何獲取交叉查詢結果表................236
※交叉匯總表※.................................238
※建立交叉匯總表的步驟※.............238
※建立交叉匯總表的最佳化※.............239
疑難87 如何按單列匯總多個工作表.................239
※匯總多個工作表※.........................241
※匯總數據位置不同的多個工作表※.........................241
疑難88 如何匯總列數不相等的多個工作表.....................241
※合併匯總(Consolidate)方法※..............242
※Array 函式※..................................243
※Evaluate 方法構造數組※..............244
※使用VBA 匯總多個列數不相等的工作表的步驟※..................246
疑難89 如何按指定列分拆工作表................246
※拆分工作表的步驟※.....................248
※判斷工作表是否存在的步驟※.....................248
※Is 運算符比較對象變數※...................248
疑難90 如何製作動態匯總的數據查詢表...............249
※動態匯總※.....................................251
※多列連線※.....................................252
疑難91 如何利用數據透視表匯總數據...................252
※數據透視表快取對象(PivotCache)※.........................254
※訪問數據透視表快取對象(PivotCache)※.................254
※數據透視表對象(PivotTable)※...................254
※創建數據透視表※.........................255
※訪問數據透視表對象※.................255
※數據透視表的欄位(PivotField)※.......................255
※數據欄位※.....................................256
疑難92 如何匯總多工作簿的數據................256
※匯總多個工作簿※.........................259
※使用GetObject 函式獲取對象※.........259
第3 節 數組處理...................260
疑難93 如何建立數組加快程式運行...................260
※數組的基本概念※.........................261
※數組的聲明※.................................262
※數組的賦值與數組數據的讀取※.................262
※Ubound 和Lbound 函式獲取數組的上下限※..................263
※For Each…Next 循環遍歷數組的注意事項※...................263
※計算程式運行的時間※.................264
※數組處理的極限※.........................264
疑難94 如何使用數組處理列數較多的數據............264
※建立列數下標的數組※.................267
※使用枚舉Enum※..........................267
疑難95 如何利用數組實現分列....................268
※Split 函式※....................................269
※將動態數組寫入單元格※.............270
※數組的維度與單元格行列的關係※.......................271
※Option Base 語句※........................271
※Join 函式※.....................................271
疑難96 如何利用數組提取不重複值............272
※利用數組提取不重複值列表的步驟※..................................273
※Redim Preserve 語句※...................273
※使用工作表函式Transpose 對數組進行轉置※.......................274
※Filter 函式※...................................275
※使用Filter 函式提取不重複值的步驟※.......................276
※空數組的判斷※.............................276
※Filter 函式的精確篩選※...................276
※Filter 函式在數據比對中的套用※...............277
疑難97 如何進行條件數量不確定的多條件數據查找...............277
※使用數組進行多條件查找※.........279
第4 節 練習與思考...............................................280
第6 章 數據的轉換..................................................281
第1 節 數據的導入與導出..................................281
疑難98 如何導入Access 資料庫的數據...................281
※利用ADO 連線資料庫※...................283
※利用ADO 執行SQL 查詢並在Excel 中輸出結果※.....................283
※SQL 語句※....................................283
※ADO 連線不同的資料庫※....................283
疑難99 如何利用VBA 批量導入文本檔案.............285
※用Open 語句和Close 語句打開和關閉檔案※..................287
※Input 語句和Line Input 語句讀取文本檔案※.....................287
※EOF 函式※....................................288
※Transpose 函式將嵌套的一維數組轉換為二維數組※........................288
疑難100 如何將xls 格式工作簿批量轉換為xlsx 格式....................290
※使用HasVBProject 屬性判斷工作簿是否有代碼※........................291
※禁止打開工作簿時執行程式※............292
疑難101 如何將Excel 按指定格式導出為文本檔案.................292
※Open 語句創建文本檔案※.........................294
※使用Print 語句向檔案中寫入指定的內容※.....................294
※Write 語句※.................................294
※Index 函式取二維數組的子集※.............295
疑難102 如何利用VBA 批量傳送郵件..............................295
※CDO 組件※.................................297
※CDO.Message 對象※...................297
※CDO.Message.Configuration 對象※...................297
※前期綁定與後期綁定※...............298
※New 關鍵字創建對象※..............299
※添加郵件的附屬檔案※................................300
第2 節 圖形與圖表...............................................300
疑難103 如何利用VBA 批量插入圖片.................300
※Shapes、Shape 和ShapeRange※............302
※Shapes 對象插入圖形的方法※...............303
※Excel 的坐標※.............................304
※圖形大小的調整※.......................304
※獲取圖片的原始大小※...............305
※將圖片按比例縮放至單元格※......305
※圖片批量插入的步驟※...............306
※Pictures 集合※.............................306
疑難104 如何利用VBA 生成圖表................307
※ChartObjects 集合和ChartObject 對象※.........................308
※Chart 對象※.................................309
※數據系列(Series)對象※.................309
※添加圖表的其他方法※...............310
疑難105 如何將工作表數據批量導出為圖片................. 311
※Copy、Cut 和Paste 方法※....................312
※圖表對象(Chart)的Export 方法※............313
※利用PPT 導出圖片※..................313
第3 節 練習與思考...............................................314
第7 章 自定義過程和函式的開發........................315
第1 節 自定義過程和函式的開發實例............315
疑難106 如何編寫帶參數的過程..................315
※使用含有參數的過程供多個過程調用※..........................317
※含有參數的過程的聲明方法※..................318
※編寫含有參數的過程的方法※...........319
※使用Application.Run 調用過程※..............319
疑難107 如何編寫處理數組排序的過程..........319
※ByVal 和ByRef 的區別※............................320
※選擇排序※...................................321
※數組排序的方法簡介※...............322
疑難108 如何編寫個人所得稅計算函式.................322
※聲明自定義函式※.......................323
※自定義函式的返回值※.......................324
※自定義函式和過程的區別與聯繫※......................324
疑難109 如何編寫獲取某列最後非空單元格行號的函式......................324
※Volatile 方法※.............................325
※易失性函式※...............................325
疑難110 如何編寫獲取最小值的自定義函式.......................325
※使用ParamArray 關鍵字聲明數組參數※........................327
※IsMissing 函式※..........................327
※IsArray 函式※........................................328
※函式的嵌套與遞歸※...........................328
疑難111 如何編寫條件查詢的函式..........................330
※使參數適用於數組和單元格區域※............................331
※TypeName 函式和VarType 函式※.....................................331
※查找指定位置的數據※.........................333
※返回指定錯誤值的函式※....................333
疑難112 如何編寫函式按條件匯總關閉的工作簿中的數據..................334
※自定義函式參數的跨表引用※..................................335
※條件求和函式的累加原理※..........................336
※使用Evaluate 方法將引用轉換為數組※..................................336
疑難113 如何使用自定義函式返回滿足條件的所有記錄....................336
※以數組作為返回值的自定義函式※.............................338
※Application.Caller 屬性※..........................................338
疑難114 如何設定自定義函式的說明...............................339
※Application.MacroOptions 方法※................................340
第2 節 練習與思考...............................................341
第8 章 Excel 對話框操作.......................................342
第1 節 Excel 對話框操作實例...........................342
第2 節 練習與思考...............................................361
第9 章 控制項和窗體的套用.....................................362
第1 節 控制項的基礎...............................................362
疑難121 如何在工作表中插入ActiveX 控制項..................362
※ActiveX 控制項※............................362
※Excel 中常用的ActiveX 控制項※.....................363
※編輯ActiveX 控制項※...................363
※通過代碼訪問ActiveX 控制項※...................364
※工作表中窗體(表單)控制項和ActiveX 控制項的區別※......................364
疑難122 如何更改ActiveX 控制項的屬性........................364
※ActiveX 控制項的屬性※................365
疑難123 如何創建ActiveX 控制項的事件............................365
※ActiveX 控制項的事件※............................366
※ActiveX 控制項的常用事件※.....................366
疑難124 如何使用日期選擇控制項向單元格輸入日期.........................367
※DTPicker 控制項※..........................368
※DTPicker 控制項的時間和日期的切換※........................369
※DTPicker 控制項的日期輸入方式※................................369
※DTPicker 控制項的Value 屬性與Change 事件※..................369
※使用DTPicker 控制項實現日期選擇並賦值給單元格※................369
※註冊DTPicker 控制項※.................370
疑難125 如何創建動態智慧型匹配的下拉列表.......................371
※TextBox 控制項和ListBox 控制項※...............................373
※ListBox 控制項的ListFillRange 屬性和List 屬性※....................373
※ListBox 控制項的多列顯示※.........374
※ListBox 控制項的值※.....................374
※模糊查詢下拉列表※...................375
※控制項的選用※...............................375
※ListBox 和ComboBox 控制項※..............375
疑難126 如何批量設定控制項屬性..................376
※CallByName 函式※.....................378
※使用CallByName 函式獲取子對象※...............................378
※使用CallByName 函式批量修改對象的屬性※.............................378
※靈活使用自定義過程※...............378
第2 節 窗體和控制項的深入套用..........................379
第3 節 練習與思考......................420
第10 章 自定義功能區........................................421
第1 節 自定義功能區實例..................................421
第2 節 練習與思考...............................................448
第11 章 程式的錯誤調試.....................................449
第12 章 綜合開發實戰.........................................462
疑難151 如何製作通用工具..........................462

精彩節摘

序一
Excel 是微軟公司Office 產品家族的一員,是一款功能強大、操作便捷且支持二次開發的制表軟體,也是微軟辦公套裝軟體的一個重要組成部分。早在1987 年第一款適用於Windows系統的Excel 問世之初,它就超越了同類表格軟體,至10 年後發布Excel 97 開始,Excel 已經被廣泛地套用於企事業管理、數據統計和財務金融等眾多領域。
隨著Excel 2010 上市,我們迫切地需要能夠全面解讀Excel 2010 的書籍來滿足用戶需求,幫助他們儘快了解基本功能、掌握套用技巧,從而更加高效地完成工作、學習及各專業領域中的套用。很開心看到“Excel 疑難千尋千解叢書”的出版,目前出版的《Excel 2010 操作與技巧》、《Excel 2010 函式與公式》、《Excel VBA 編程與實踐》、《Excel 2010 SQL 完全套用》等讀本,以各自不同的側重面展示了Excel 2010 的諸多套用技巧,同時,也讓人十分期待叢書其他讀本的面市。
此系列叢書由多位微軟最有價值專家(MVP)和Excel 技巧網的版主參與撰寫,他們憑藉著出眾的Excel 技術水平,以及樂於奉獻的無私精神,長期在Excel 技巧網以及微軟Office 技術社區孜孜不倦地幫助用戶解決技術難題,積累了豐富的疑難處理經驗和寫作經驗,為寫作本叢書奠定了基石。
微軟最有價值專家(MVP)是指具備一種或多種微軟技術專業知識,並且積極參與線上或離線的社群活動,經常與其他專業人士分享知識和專業技能,受人尊敬、信任,而且平易近人的專家。他們是一群擁有豐富知識和實際經驗的微軟技術專家,他們不是微軟的員工,但是非常樂於通過線上或離線社區的方式幫助他人。MVP 項目主要目的在於鼓勵形成一個充滿活力的全球性社群,使得微軟和用戶之間建立良好的互動關係、增進相互了解,鼓勵更多的社區專家深入到社區中幫助用戶解決技術問題。
正由於以微軟MVP 為首的一群技術專家在Office 技術社區的不斷貢獻,讓我們看到了“Excel 疑難千尋千解叢書”的出版。這是一套源自於技術討論社區的書籍,這是一套打破傳統模式而以發現問題、解決問題為本的書籍,這是一套匯集了社區專家智慧的書籍,這是一套讓你看了愛不釋手的書籍,這是一套快速幫您解決Excel 技術問題的書籍。
立身以立學為先,立學以讀書為本,與大家共勉之,希望大家通過閱讀這套叢書而多多受益。
微軟社區項目經理
林思綺
序二
與黃朝陽和Excel 技巧網技術社區是在年初透過微軟社區精英計畫而結識的。微軟社區精英計畫是微軟為了協助國內在技術社區上有一定影響力的社區或個人,或是願意為國內信息技術做出貢獻的社區或個人而設立的培訓與支持計畫,同時也是配合國家培育人才的政策而成立的。很高興能看到朝陽與Excel 技巧網能將這些有用的信息集結成書,讓更多的國人受惠。也很開心看到微軟社區精英計畫里的社區組織與意見領袖們能有此成就。
下面有4 個如果,如果您正好符合其中一個,您可以考慮在書店裡找個安靜的角落享受一下,或者是帶回家仔細品嘗。
如果您還認為Excel 只是一個試算表或是辦公室軟體,那么我會建議您閱讀此書,讓您將Excel 的價值提升到另一個高度。
如果您是長期使用Excel 的老手,應該不難發現Excel 已不再是試算表的概念。經過微軟研發團隊多年來不斷的收集與匯總用戶反饋後,集成了中小型企業以及大型企業乃至於個人使用者的不同需求,並將商業智慧型(Business Intelligence)巧妙地揉進裡面,透過此書,希望您能發現更多Excel 的套用技巧,提高您的使用技能。
如果您是使用Excel 的專家,也許這些通用型功能還不足以滿足您的需求,您還可以通過使用VBA(Visual Basic for Application)來刻畫出自定義的函式、自動化的流程等特定功能來滿足不同的需求,透過 VBA 分冊,希望您能發現更多VBA 的秘密,讓VBA 成為您得力的助手。
如果您在尋找不同場景或是產業鏈中Excel 所扮演的角色,我希望這本書中的案例與實戰能幫到您,希望您能將這些案例與實戰套用於您具體的場景或產業鏈中。
開卷有益,開卷有得,每個人讀書所獲得的都不一樣,只要打開書本讀書,總是有好處的。讀書即未成名,終究人品高雅——與君共勉之。
微軟(中國)市場經理 廖浩志
序三
用Excel 的人很多,會用Excel 的人很少。
類似的情況也同樣出現在Excel 圖書上:介紹Excel 的圖書很多,真正對讀者有用的書很少。
在瀏覽過琳琅滿目、各種類型或各種專題的Excel 圖書之後,在領略過百科全書式的詳細解析或是武功秘籍般的招式演繹之後,依然有這樣一套“疑難千尋千解叢書”能夠讓人眼前一亮。刮目相看的原因在於,這套書把立場和視角真正建立在了讀者的基礎上——每一個問題都來源於Excel 用戶可能真實面對的疑惑和困擾,每一個解答都有可能正是許多坐在計算機前束手無策的朋友正在搜尋的目標。這套書真正做到了理解讀者在想些什麼,體會到了讀者正在面對怎樣的困境,從而引領我們從四處碰壁的電子迷宮中輕鬆突圍。而本書的作者,這些技術超群的Excel 專家們,這些被稱為電子世界的羅賓漢們,用他們的專業精神和實用技術,給眾多受困於Excel 無邊苦海中的數據工作者們奉獻了一套真正意義上的Excel 生存手冊。
如果你也正準備踏上征服Excel 的旅程,不妨就把這本書也放進你的背包行囊里吧!
微軟全球最有價值專家MVP 方驥
序四
我在微軟Office 開發平台上工作已經有很長一段時間了,從最早在台灣策劃的“Office 首屆開發技術大會”到主持大陸地區的“Office 首屆開發技術大會”,在過去將近二十年的時間裡,協助微軟發表過許多重量級的產品,也接觸過無數Office 用戶。當我拿到“疑難千尋千解叢書”時,很自然地想到這些朋友和夥伴需要什麼樣的鼓勵和幫助。
每個時代都在發生變化,我們學習的方式也會有所不同。在選擇一本圖書學習的時候,我們不僅僅考慮價格,更重要的是考慮這本書的價值,其中包括“誰寫的?”、“寫的什麼內容?”無疑,“疑難千尋千解叢書”的作者不僅在他們各自的領域有著相當豐富的經驗,而且其中一些作者還是微軟最有價值專家(Microsoft MVP),這使得書籍的內容更具有實用價值。
在20 世紀90 年代初期,大多數電腦愛好者都是通過新聞群組(newsgroup)的方式交流經驗,這期間不時有許多經典之作和奇思妙想,我當時就在想,為什麼沒有人把這么多精華結合實務整理出來呢?答案就是沒有那么多專業的人力,更重要的是一種完全投入的興趣與不問收穫的持續付出,而現在“疑難千尋千解叢書”的出版使這個問題得到了解決。
我非常認真地翻閱了“疑難千尋千解叢書”的內容和目錄,以較高和挑剔的標準替讀者把關和審核。我的建議是閱讀這系列叢書時,避免將它從第一頁開始讀到最後一頁,這不是一套庸俗之作,它的精華在於目錄,因為它就像字典一樣,當每一個希望自己在相關領域更上一層的Office 玩家碰到相關的問題時,可以通過它先判斷類別,然後搜尋目錄找到相關的問題,直接跳到那一頁,每個問題幾乎都有【操作方法】、【原理分析】和【知識擴展】,讓讀者從一個問題點學習到更多的內容。
如同所有的書籍一樣,這套書也有再版時可以改進的空間,但如果有一天,當你在整理房間,並決定丟掉一些過時的計算機書籍時,請你務必留下它,因為某個百思不解的知識很可能就靜靜地躺在書里的某一頁角落,等著與你相遇。
企業信息化管理戰略顧問 @郭安定

作者簡介

黃朝陽,網名apolloh,微軟全球最有價值專家(MVP),Excel技巧網站長,擁有十多年豐富的企業信息化實踐和管理經驗,精通Excel和MS SQL在企業中的套用。早期曾在多個Office技術社區擔任版主,參與過多部Excel暢銷書的編著工作。
新浪微博:@Excel的那些事
李懿,網名amulee,ExcelTipnet技術社區版主。多年從事人力資源管理工作,專注於Excel在辦公自動化中的套用,在各領域Excel套用開發中有著豐富的實戰經驗。

媒體評論

Excel 的博大精深已令活躍於網路社區中的眾多高手深有體會,一直以來,人們都在探尋關於Excel 的最佳學習方法和途徑,希望通過其獲取最新而且實用的Excel 套用技術,相信本書的讀者能得到一份這方面的滿意答卷。
——微軟全球最有價值專家MVP 陳軍(網名:chenjun)
本書完全從實用角度著手,基於各種實際工作中的例子,讓您快速找到適合自己的方式方法,“工欲善其事,必先利其器”,你,準備好擁有“利器”了嗎?
——微軟全球最有價值專家MVP 程傳魏(網名:kewinchengcw)
本套叢書立意新穎,內容充實,按照“提出問題→解決問題→擴展問題”的模式,圖文並茂地對大量實際工作中的常見Excel 問題進行了細緻的描述和深入淺出的講解。授人以“魚”,同時授人以“漁”,適合從基礎到高級的Excel 用戶和程式設計師閱讀,使您的工作事半功倍,得心應手!
——微軟全球最有價值專家MVP 楊志寧(網名:northwolves)
在這座VBA“魚莊”里,我不僅品嘗了美味可口的“魚肉”,更加讚嘆作者烹飪美味“魚肉”的高超技藝。本書語言簡潔,代碼精煉,疑難案例實用,解決思路巧妙,值得閱讀!
——微軟全球最有價值專家MVP 《Word 2010 實用技巧大全》作者 陳少遷(網名:0Mouse)
本書很適合初學者,內容的編排上層層遞進,淺顯易懂,示例代碼都有詳盡解析,不僅可以直接解決疑難問題,還能學習到規範、高效的VBA 編程習慣。對已經熟練使用VBA 的人來說,本書針對同一個問題,經常提供多種解決方案,可以用來拓展編程思路和幫助查漏補缺。阿木一直是我很佩服的一位學長,常年在技術社區幫助網友解決問題,並且有HR 和程式設計師雙重背景,所以他清楚地知道,怎樣寫作可以讓大眾接受,如何講解可以讓讀者吸收。讓我們一起跟隨著阿木的腳步,來領略VBA 的獨特魅力吧。
——程式設計師 彭佳
本書由淺入深,從典型案例出發,作者高超的VBA 編程水平和駕輕就熟的講解,將VBA的優點展現得淋漓盡致,而且詳細的代碼注釋清晰明了。如果你還在為苦於看不懂VBA 代碼發愁,那么這本書是你很好的選擇。
——寧波港股份有限公司鎮海港埠分公司 吳旭東
本書著實讓人眼前一亮,它避開了繁雜和枯燥的理論,以實例的方式切入各知識點來講解。隨著學習的深入,你就會發現原本套用中複雜的Excel 系統竟然如此有趣而簡單。如果你想從數據如山的痛苦中解脫出來,就看看這本書吧,它可謂是由簡入繁,培養高手的經典之作。
——漢能控股集團 陳黎明

前言

感謝您選擇“Excel 疑難千尋千解”叢書之《Excel 2010 VBA 入門與提高》!
Excel 具有強大的數據處理能力。由於其操作的便捷性和數據展現的直觀性,被越來越多的需要與數據處理打交道的用戶所使用。也有越來越多的用戶將Excel 作為日常管理中必不可少的工具。Excel 自2003 版本以來至2010 版本,VBA 已經升級為7.0 版本,其功能逐漸被豐富,性能得到了極大的提升。通過使用VBA,可以實現數據的極速處理,讓您從繁重的數據工作中脫離出來;通過使用VBA,可以讓您方便地實現行政、人事、供應鏈、財務等方面的基礎管理工作。熟練掌握VBA 技術可以極大地提升您的工作效率,讓您有更多的時間投入到核心業務中去,為您的職業發展道路提供更多的可能。
本書由153 個實用的案例構成,由淺入深、由易到難地向您展示VBA 在實際工作中的套用。每個案例都配有詳細的原理解釋、代碼注釋以及解題思路分析,讓您能夠輕鬆掌握VBA編程技術的精髓,以更快地將其中的技術套用到實際工作中。
叢書介紹
“Excel 疑難千尋千解”叢書是由Excel 技巧網(ExcelTipNet 技術社區)的負責人、微軟最有價值專家(MVP)黃朝陽先生策劃並組織編寫的一套叢書。
Excel 技巧網旨在重點推廣Office 2010 及今後更高版本的套用,並為廣大的Office 愛好者提供一個內容充實、分類清晰、經典實用、精彩紛呈、互相學習、友好交流的平台。社區成立不久便吸引了眾多微軟MVP 和有志於推廣Office 套用技術的高手駐足,長期為網友免費解答疑難問題,並勤於將精彩的答疑帖子按其所涉及的知識和套用兩個維度,整理成為原創技術文章。
社區設有“討論”、“文章”、“資源”等技術專區,並按照功能劃分為Excel 各類功能、Word、PowerPoint、Access 等主題分類,本書正是基於Excel 的VBA 主題分類。
本叢書由黃朝陽、王建發、陳國良、榮勝軍、陳樹青、李懿、陳少遷等微軟MVP,以及羅剛君、李術彬、林盤生、章蘭新、薛宇鋒、彭佳、任強等多位社區資深版主聯手打造,將來還將邀請更多的高級會員加盟參與叢書其他讀本的創作。其中,《Excel 2010 操作與技巧》《Excel2010 函式與公式》《Excel 2010 VBA 編程與實踐》已於2010 年12 月出版,《Excel 2010 SQL完全套用》已於2011 年8 月出版,《Excel 2010 數據透視表大全》已於2013 年1 月出版,《Word2010 實用技巧大全》已於2014 年1 月出版,本次隆重推出讀者期待已久的《Excel 2010 VBA入門與提高》,以滿足眾多VBA 初學及進階者的需求,近期還將陸續推出《Excel 2010 圖表與圖形》等其他讀本。
得益於多年來社區答疑的磨礪,作者們將豐富的實戰經驗付諸筆端,精心設計了上千案例,將Office 方方面面的知識點融入其中。每個案例都採用一般用戶遇到疑難時最可能的提問方式和套用場景對問題進行描述,提供具有針對性的解決方案和詳盡的操作步驟,並配合以原理分析和知識擴展環節,既授人以魚,又授人以漁。叢書全系提供“疑難”加“知識點”的特色目錄索引,方便讀者根據需要快速查找。對於渴望學習和擁有新知識的Office 用戶來說,與其千百次地找尋問題答案,不如靜心地讀此叢書一卷。
讀者對象
本書使用Excel 2010 軟體進行編寫,但是在編寫過程中,作者特注重程式的通用性,儘量保證每個案例的解決方案都通用於Excel 2003、Excel 2007 和Excel 2010。
本書通過153 個案例,包含3 個綜合套用案例,闡釋了VBA 基礎編程技術以及其核心的技巧。適合所有的辦公人士,特別是需要提升工作效率及需要深入研究VBA 者學習之用。如果您沒有VBA 基礎,那么本書是一本非常有用的入門級教材,它將由淺入深地向您展現VBA編程技術,幫助您理解VBA 的核心編程技術,並能夠在實際工作中使用VBA 提高工作效率。如果您已經有VBA 基礎,那么本書是一本幫助您整理知識點並拓展思路的提高教材。本書將向您提供完整的VBA 知識架構、全面的解決方案以及解決問題的思考方法。如果您已經是一位VBA 資深開發人員,本書可以作為您隨手的參考書,書中所提供的代碼只需要稍作改動,即可套用於實際問題。
閱讀指南
本書包括12 章,涉及Excel VBA 的每個方面。其中,第1 章至第4 章為Excel VBA 基礎知識。第5 章為問題解決思路。第6 章至第10 章為VBA 的擴展套用,包括數據轉換、自定義過程和函式的開發、對話框互動操作、控制項和窗體的套用以及自定義功能區。第11 章為程式的錯誤調試。第12 章為綜合開發實戰。每章都根據所涉及的知識點的不同,選取了實用的案例,並為讀者準備了相應的思考和練習題。
詳細的章節內容如下。
第1 章 認識VBA
本章主要介紹如何通過錄製宏獲取VBA 代碼,並且介紹了VBA 的基礎知識、基本語法以及基本語句。幫助讀者入門VBA 編程,為之後章節的學習提供理論基礎。
第2 章 數據的基本處理
本章介紹如何使用VBA 代碼對Excel 的單元格以及單元格區域進行操作,其中包括單元格的讀取、寫入、查找、格式設定等操作,並使用了常見的案例闡述如何使用這些基礎操作解決實際問題。
第3 章 VBA 常用函式和語句
本章主要介紹VBA 中常用的函式和語句,並結合前兩章所學的知識和案例進一步說明函式和語句的使用方法。
第4 章 多表數據處理
本章說明了跨工作表、跨工作簿進行數據處理的基本方法,以及如何套用事件程式實現Excel 中“自動完成”的功能。
第5 章 數據處理的綜合套用
本章是前4 章所學知識點的總結和綜合套用,進一步闡述數據處理的解決思路,並引入數組以進一步提高數據處理的速度。
第6 章 數據的轉換
本章介紹如何實現Excel 數據與其他數據形式的轉換,其中包括如何從Access、文本檔案中導入數據,以及如何將Excel 的數據導出到所需的數據格式中。為實現跨數據平台系統的開發提供了基礎。
第7 章 自定義過程和函式的開發
本章介紹如何開發自定義過程和函式,並將開發成果套用於工作表,從而教會讀者如何將類似的數據處理合併為同一個過程或者函式進行處理,並引用參數傳遞,使程式更具通用性,為開發更複雜的程式提供必備的技術。
第8 章 Excel 對話框操作
本章向讀者介紹如何通過VBA 對話框操作實現Excel 程式與用戶間的互動,為實現更好的用戶體驗提供有力的工具。
第9 章 控制項和窗體的套用
本章介紹了如何使用控制項和窗體使Excel 程式更專業,並通過使用控制項和窗體實現更多豐
富的功能。為打造專業的Excel 程式提供專業的界面設計。
第10 章 自定義功能區
本章介紹如何定製Excel 的功能區,以及功能區控制項的基本操作。為設計專用的Excel 程式工作簿提供了可能性,並為Excel 外掛程式的開發提供了便捷的用戶互動的視窗。
第11 章 程式的錯誤調試
本章介紹常見的錯誤調試的方法以及VBE 提供的程式調試工具,幫助讀者自行解決在編程中遇到的各種錯誤和問題。同時也介紹如何使用錯誤的自動處理開發完善的程式。
第12 章 綜合開發實戰
本章以製作通用的工具、調查表及信息收集系統、簡易收發管理程式為切入口,向讀者展示開發綜合型Excel VBA 程式的思路、方法和具體實現的步驟。
本書約定
為了熟悉本書對滑鼠操作、鍵盤指令等描述方式,從而更順暢地閱讀本書,您有必要了解以下內容。
本書中表示連續的多個選單指令時,使用右箭頭“→”進行連線,例如:單擊“開發工具”選項卡→“插入”→“按鈕(窗體控制項)”,表示依次單擊“開發工具”選項卡的“插入”按鈕,在彈出的子選單中選擇“按鈕(窗體控制項)”選單。
本書中表示滑鼠操作時,均使用標準的表示方法。其中“指向”表示將滑鼠指針移到對象之上,且不單擊任何按鈕;而“單擊”特指利用滑鼠左鍵單擊目標;“右鍵單擊”表示利用滑鼠的右鍵單擊對象;“雙擊”表示快速按滑鼠左鍵兩次;“拖放”則表示按下滑鼠左鍵不鬆開的狀態下拖動滑鼠,拖到目標區域後再放開滑鼠左鍵。
本書中表示按鍵時使用括弧“【】”號來表示,例如:“按組合鍵【Ctrl+Shift+Enter】”表示同時按鍵盤上的Ctrl 鍵、Shift 鍵和Enter 鍵。而“【F5】”則表示按鍵盤上方的“F5”鍵。
本書的VBA 代碼均不區分大小寫,在編寫代碼時可以隨意,但代碼錄入到代碼視窗後,VBA 會將代碼自動轉換成其內置的大小寫形式或者變數聲明時的大小寫形式,帶引號的文本字元串和變數名除外。
本書特點
本書與市場上其他Excel VBA 書籍有很大的不同,文體結構新穎,案例貼近實際,講解深入透徹。主要表現在以下幾方面:
y 場景式提問
本書從成千上萬的網友提問中精心歸納、提煉出各類問題,並還原為貼近真實的求助語言及案例,方便讀者搜尋與實際工作相似的問題。
y 開創式結構
本書案例中的“解決方案”環節是對問題的思路解說,結合“操作方法”環節中的步驟讓人更容易理解。“原理分析”環節則主要解釋所使用代碼的工作原理或者詳細解釋思路。“知識擴展”環節包括與案例相關的知識點的補充,可拓展讀者的視野,同時也有利於理解案例本身的解決思路。
y 漸進式章節
精心設計的章節和案例,使本書中各章節知識點循序漸進,方便讀者鞏固已學的知識,又不會因為知識點的缺失而造成閱讀和學習的困難。
y 啟發式描述
本書注重培養讀者解決問題的思路,以最樸實的思維方式結合啟發式的描述,幫助讀者發現規律、總結規律和運用規律,從而啟發讀者快速找出問題的解決方法。
學習方法
本書是VBA 入門與提高的教材,其宗旨在於不但介紹如何編寫VBA 程式,更著重介紹如何編寫VBA 程式解決實際工作的疑難,以及對同類的問題提供解決思路。
書中前4 章的結構是從易到難,由基礎到提高,建議讀者順序閱讀,以掌握VBA 以及VBA操作Excel 的基本方法。從第5 章開始,其結構雖然是從易到難,但章節之間相互獨立,即可以從任意章節開始學習,不需要遵照從前至後的順序閱讀。
本書配有示例檔案,讀者需將這些檔案放置於D 盤“千尋千解VBA”目錄下,方可保證程式正確運行。本書中所有的代碼均針對書中案例所編寫,不具備通用性,但只需略做修改,即可套用於各類實際問題。書中的代碼在Windows 7 中文版和Office 2010 中文版下運行通過。
售後服務
本書由Excel 技巧網(ExcelTipNet 技術社區)出品,讀者在閱讀過程中有任何疑難或者建議、BUG 反饋等都可以到社區發帖,包括求助、交流,也可以在本社區下載與本書相關的文檔。
同時,本書也配備了專門的QQ 群做售後服務,群號公布於上述網頁中,讀者可以申請加入群中與作者進行面對面的交流。
作者與致謝
叢書從策劃到出版,傾注了電子工業出版社計算機圖書分社張慧敏、李利健、石倩等多位編輯多年的心血,特在此表示衷心地感謝!
為保證叢書的質量,使其更貼近讀者,我們組織了Excel 技巧網的多位版主和高級會員參與了本書的預讀工作,他們是歐劍君、高大偉、彭佳、陳少遷、吳旭東、謝永付、顏建忠、關雲慧、袁經緯、陳黎明、楊嘉愷、陳樹青、鍾煉煉、賈祥偉和薛宇鋒。感謝各位預讀員的辛勤、耐心與細緻,使得本叢書能以更加完善的面目與各位讀者見面,特別感謝陳樹青圓滿地組織了本次預讀工作。
本書由黃朝陽擔任主編,李懿負責編寫。王建發、陳國良、羅剛君、李術彬、榮勝軍、林盤生、陳樹青、陳少遷、任強、彭佳、章蘭新參與審校,最後由李懿完成統稿。
儘管作者們對書中的案例精益求精,但疏漏仍然在所難免,如果您發現書中的錯誤或某個案例有更好的解決方案,敬請登錄社區網站向作者反饋,我們將儘快在社區中給出回復,且在本書再次印刷時修正。
再次感謝您的支持!
編著者
2014 年1 月26 日

相關詞條

相關搜尋

熱門詞條

聯絡我們