《Excel2010VBA編程與實踐》是2010年出版的圖書,作者是羅剛君章蘭新黃朝陽。
基本介紹
- 書名:Excel2010VBA編程與實踐
- 作者:羅剛君 章蘭新 黃朝陽
- ISBN:978-7-121-12039-8
- 定價:69.00元
- 出版時間:2010年11月
內 容 簡 介,自 序,目 錄,
內 容 簡 介
本書是“Excel疑難千尋千解”叢書之一,為讀者展示VBA編程的實戰技巧,包括工作中的疑難處理方案、自定義函式技術、代碼封裝技術、功能區設計技術,以及外掛程式開發實戰與原理分析。本書側重於“解決問題”,主要展示諸多常見疑難的解決方案。閱讀本書,可以解決工作中的諸多疑難雜症,大大提高工作效率,且有助於提升編程能力、拓展思路,將理論向實戰邁進。
本書有一個貫穿全文的思想:讓代碼同時具備準確、糾錯、兼容和效率四個特性,所以本書所有案例都在準確性與高效性的基礎上提供完善的錯誤處理措施與思路講解,且所有案例都通用於Excel 2003、2007和2010。作者使用Excel 2010界面寫作,但代碼在多個版本中都可以正常運行,不需要任何修改。
本書包括251個案例,最後一個是VBA的大型綜合套用——開發工資管理系統。書中每個案例採取疑難描述、解決方案、操作方法、原理分析、知識擴展五個步驟進行講解,力圖解決問題之外還讓讀者可以通曉其思路和原理。
本書配合《Excel VBA程式開發自學寶典》學習會有更好效果,該書側重於VBA的基礎理論教學,而本書則側重於解決實際問題,屬於該書配套的進階套用。前者學習理論與語法,而通過本書學習思路與技巧。
本書既適合Excel VBA用戶參考學習,又可以作為大中專院校或者企業的培訓教材,同時對於在數據處理與分析方面有實戰經驗的用戶也有較高的參考價值。
自 序
尋,是一種尺度。古時八尺為一尋,王安石詩云“飛來峰上千尋塔,聞說雞鳴見日升”,形容飛來峰上塔之極高。
尋,是一種追求。網路上活躍著這么一群人,他們曾經也是懵懂的菜鳥,在尋解獲助時心存感激,在尋師問道時心懷崇敬。漸漸地,他們因互助的理念而聚集,相互扶持,堅持不懈地學習、實踐與創新。面對一個個技術的據高點,他們是睿智而無私的“尋者”,壁立千尋敢登攀,尋根究底解疑難!
尋,是一種心境。求知探秘當志存華山論劍之高遠,解決問題應意守無劍無招之尋常,這便是“尋者”修煉的心境。來者是客,有問必答,不慕華麗的招式,但求直擊問題之根源,用簡單的方法完成複雜的事情。
本叢書的作者就是這樣的一群“尋者”。在長期的線上答疑和線下交流、培訓活動中,他們接觸過針對同一類問題千奇百怪的提問,深知許多人苦尋而不得的要害,甚至練就了一手僅根據含混不清的提問進行猜題、解題的本領。通過不斷地積累與整理,Excel技巧網(技術社區)的版主們推出了“Excel疑難千尋千解”叢書,這些“疑難”都是許多人曾經搜尋和提問過的,也是大多數用戶在工作中可能會遇到的一些尋常問題。書中案例涉及行政辦公、人力資源、金融財務、經濟統計、學校教育、工程技術、醫療衛生、質量管理、生產管理等多個領域,並根據Excel的主要功能分冊地整理成書。
在叢書編著過程中,“實用為主”的原則貫徹始終,所有案例都遵循實際工作場景和知識點解說緊密結合的主線,拋開一些華而不實、艱難晦澀的高深解法,而將基礎理論和解決方案寓於尋常技巧之中,讓讀者能得其用、明其理,以期實現為更多的人解決更多問題的簡單願景。
尋者
感謝您選擇“Excel 疑難千尋千解”叢書之《Excel 2010 VBA編程與實踐》!
Excel 2010具有強大的運算與分析能力。從Excel 2007開始,改進的功能區使操作更直觀、更快捷,實現了質的飛躍。不過需要進一步提升效率及實現自動化則僅靠功能區的選單功能是遠遠不夠的,正因如此,微軟公司在Excel中引進了VBA程式,且首次在Excel中升級VBA到 7.0版本。通過VBA可以讓複雜的報表簡單化,且可以讓部分操作全自動完成,十倍或者百倍的制表效率成為可能。
叢書介紹
Excel技巧網旨在重點推廣Excel 2010及今後更高版本的套用,並為廣大的Excel愛好者提供一個內容充實、分類清晰、經典實用、精彩紛呈、互惠學習、友好交流的平台。社區成立不久便吸引了眾多微軟MVP和有志於推廣電子表格套用技術的高手駐足,長期為網友免費解答疑難問題,並勤於將精彩的答疑帖子按其所涉及的知識和套用兩個維度,整理成為原創技術文章。
社區設有討論、文章、資源三大技術專區,並按照Excel的功能歸屬將主題劃分為基礎套用、數據透視表、條件格式、函式與公式、圖表與圖形、VBA、SQL in Excel、綜合套用等方面,本叢書的各讀本正是基於相近的主題分類。
本叢書由黃朝陽、王建發、陳國良等微軟MVP以及羅剛君、榮勝軍、李術彬、林盤生、陳樹青、章蘭新等多位社區資深版主聯手打造,將來還將邀請更多高級會員加盟參與叢書其他讀本的創作。其中《Excel 2010操作與技巧》、《Excel 2010函式與公式》、《Excel 2010 VBA編程與實踐》已先於第一批出版,近期還將陸續推出《Excel 2010圖表與圖形》、《SQL in Excel 2010》等其他讀本。
得益於多年來在社區答疑中的磨礪,作者們將豐富的實戰經驗付諸筆端,精心設計了上千案例,將Excel方方面面的知識點融入其中。每個案例都採用一般用戶遇到疑難時最可能的提問方式和套用場景對問題進行描述,提供具有針對性的解決方案和詳盡的操作步驟,並配合以原理分析和知識擴展環節,既授人以魚,又授人以漁。叢書採用“疑難”加“知識點”的特色目錄索引,方便讀者根據需要快速地查找。對於渴望學習和掌握新知識的Excel用戶來說,與其千百次地找尋問題答案,不如靜心地讀此叢書一卷。
讀者對象
本書使用Microsoft Office Excel 2010界面進行編寫,但是在編寫過程中作者特意注重程式的通用性,確保每個案例的解決方案都通用於Excel 2003、2007和2010。而且為了方便讀者,隨書光碟中主要有兩種格式的案例檔案,包括xls格式和xlsm格式,如果是載入宏則包括xla格式和xlam格式。不管讀者使用Excel 2003、2007還是2010都可以直接使用,不需要轉換,也不需要修改代碼就可以順利的在多版中使用本書的所有案例。
本書通過250個案例和1個大型綜合套用展示VBA編程技巧,適合所有辦公制表人士,特別是需要提升工作效率及需要深入研究VBA者學習之用。如果您沒有VBA基礎,那么本書可以為您解決工作中的疑難。書中對常見問題有一個或者多個解決方案,並輔以解題思路與原理分析,讀者可以通過書中的現有案例進行拓展,解決更多的類似問題。而對於已有VBA基礎者,則可以學習本書的解題思路與代碼防錯技術、代碼最佳化之道。本書的案例涉及基礎套用、查找引用、數據處理、報表列印、函式開發、檔案目錄、圖表設計、圖形對象、窗體控制項、外掛程式開發、代碼封裝和在工資管理系統等諸多方面,可以全方位的提升VBA編程的功底,讓您將VBA理論投入到工作中轉換成效率。
閱讀指南
本書包括11章,涉及制表的每個方面。前10章分別為基礎理論篇、查找引用篇、數據處理篇、報表列印篇、函式開發篇、檔案目錄篇、圖表設計篇、圖形對象篇、窗體控制項篇、外掛程式開發篇,每章有數十個案例,且為了讓讀者能學以致用,每章提供3個思考與練習題。最後一章為綜合套用,講述通過VBA開發工資管理系統的思路。
詳細的章節內容如下:
第1章:基礎理論篇
本章包括5個小節——快速獲取幫助、程式防錯要點、代碼最佳化之道、提升代碼的兼容性。主要介紹VBA編程的一些基礎知識、代碼的糾錯與最佳化,不過是以案例形式呈現出來,通過實際的套用讓理論描述更有說服力。
第2章:查找引用篇
本章包括4個小節——本表查找、跨表及多表查找、檔案查找與轉換和圖片查找與引用。主要講述數據引用、圖片引用的經典案例。其中對於查找提供了多種思路,儘量展示效率最高且具有容錯性的代碼與技巧。本章是全書的三大重點之一,通過大量的實例傳授瞬間查找數據的技巧。
第3章:數據處理篇
本例包括7個小節——定位的技巧、數據處理及格式轉換、單元格合併技巧、報表合併與拆分、單元格顏色的綜合套用、重複數據處理和數據透視。本章是第二個重點,全面闡述VBA對數據處理的技巧。Excel本身具備數據處理的功能,而利用VBA可以大大提升數據處理的速度,本章屬於辦公制表人員必學範疇。
第4章:報表列印篇
本章包括2個小節——列印設定和特殊列印格式設計。主要講述與列印或者列印格式設定方面的疑難處理技巧,包括工資條設計、分頁小計、批量列印和底端標題等等相當常用的一些疑難處理。
第5章:函式開發篇
本例包括3個小節——自定義函式基礎、開發自定義函式和自定義函式的管理。本章闡述開發函式的技巧與函式的管理思路,從而強化Excel的運算能力。
第6章:檔案目錄篇
本章包括2個小節——檔案管理和目錄管理。本章內容與制表本身無直接關係,但可以對檔案和資料夾進行刪除、備份、創建、轉換、命名等等操作,對工作大有裨益。
第7章:圖表設計篇
本章包括2個小節——圖表編輯和多表管理。設計基本的圖表比較適合手工操作,而對於圖表或者圖表中的標籤批量操作時,VBA就有用武之地了,可使操作效率大大提升。
第8章:圖形對象篇
本章包括3個小節——圖形對象的基本操作、批註的高級套用和圖形對象綜合套用。與圖形對象相關的高級套用不適合手工操作,本章通過21個案例演示VBA操作圖形對象的技巧,包括導入、導出、引用、瀏覽等等操作。
第9章:窗體控制項篇
本章包括4個小節——ActiveX控制項套用、窗體設計技巧、窗體與工作表之數據互動和開發動畫窗體。其中重點在於窗體與工作表數據互動的案例演示,通過窗體處理數據並導入、導出,可以實現很多Excel本身無法完成的功能。最後對窗體的美化技巧提供6種思路。
第10章:外掛程式開發篇
本章包括3個小節——訂製選單與工具列、開發通用外掛程式和封裝DLL外掛程式。本章是本書第三個重點章節,通過案例展示VBA開發外掛程式的強大功能,並附帶開發功能區的步驟與技巧,使讀者有中文功能區的開發有進一步認識。通過本章的案例,讀得可以開發自己需要的外掛程式,包括將外掛程式封裝,從而實現代碼隱藏。
第11章:工資管理系統
本章講述利用VBA開發一個中型系統的過程與思路,屬於VBA的綜合套用。
本書約定
為了熟悉本書對滑鼠操作、鍵盤指令等描述方式,從而更順暢地閱讀本書,您有必要了解以下內容:
選單
本書中表示連續多個選單指令時,使用右箭頭“→”進行連線,例如:單擊“檔案”選項卡→“選項”→“公式”,表示依次單擊“檔案”選項卡的“選項”按鈕,在彈出的“Excel 選項”對話框中單擊“公式”選項卡。
滑鼠
本書中表示滑鼠操作時,均使用標準的表示方法。其中“指向”表示將滑鼠指針移到對象之上,且不單擊任何按鈕;而“單擊”特指利用滑鼠左鍵單擊目標;“右鍵單擊”表示利用滑鼠的右鍵單擊對象;“雙擊”表示快速按下滑鼠左鍵兩次;“拖放”則表示按下滑鼠左鍵不鬆開的狀態下拖動滑鼠,拖到目標區域後再放開滑鼠左鍵。
鍵盤
本書中表示按鍵時使用尖括弧“【】”號包含,例如“按【Ctrl+Shift+Enter】組合鍵”表示同時按下鍵盤上的Ctrl鍵、Shift鍵和Enter鍵。其他按鍵的表示方法相同,如果需要特殊操作方法,會在相關內容中詳細說明。
代碼
本書的VBA代碼均不區分大小寫,在編寫代碼可以隨意,但代碼錄入到代碼視窗後,VBA會將代碼自動轉換成首字元大寫形式,帶引號的字元串和變數名除外。
本書特點
本書與市場上其他Excel書籍有很大的不同,文體結構新穎,案例貼近實際,講解深入透徹,表現為以下幾個方面:
場景式提問
本書從成千上萬網友提問中精心歸納、提煉出各類問題,並還原為貼近真實的求助語言及案例,方便讀者搜尋與實際工作相似問題。
增強式目錄
本書總體章節劃分以“基礎理論→分類套用→綜合實戰”為主線,將VBA的主要知識點和經典解決方案設計到每個疑難的案例中,並採用“疑難”加“知識點”的特色目錄索引,方便讀者根據需要翻閱和查找。
開創式結構
本書案例中的“解決方案”環節是對問題的思路解說,結合“操作方法”環節中的步驟讓人更容易理解。“原理分析”環節則主要解釋所使用代碼的工作原理。“知識擴展”環節包括與案例相關的知識點補充,可拓展讀者的視野,同時也有利於理解案例本身的解決思路。
本書的代碼還有兩個顯著的特點,有別於市場上其它同類書籍,即處處確保代碼的防錯與通用性。
防錯
防錯是指編寫代碼時儘可能考慮所有可能出錯的情況,並在代碼中加以防範。或者根據不同潛在的運行環境提供不同的執行方案,讓代碼可以多種情況下順利執行,而不會彈出錯誤提示框導致程式中斷。
通用
通用性是指代碼可以適應不同環境。環境是指軟體的不同版本,例如WIN XP、VISTA和WIN 7作業系統都可以順序執行本書所有案例的代碼,Excel 2003、2007和2010版本的用戶也可以順利執行每個案例的代碼,且不需要做任何修改。
環境還包括表格的區域。本書儘可能不採用硬編碼引用工作表對象和區域地址,而採用具備自動適應變化的代碼作為數據處理的引用源,從而使代碼適應不同用戶或雖是同一用戶但工作表數據區域變化時皆可使用。例如Range("A1:D10")引用區域屬於硬編碼,當數據區域變化後,代碼必須修改才可執行;而採用ActiveSheet.UsedRange或者ActiveCell.CurrentRegion兩種方法引用區域則可以適應數據區域的增減變化,從而提升代碼的通用性。
學習方法
本書是VBA編程的案例集粹,其宗旨在於為讀者解決實際工作的疑難,以及對同類的問題提供解決思路。
書中各章節的結構雖然是從易到難,但章節之間相互獨立,即可以從任意章節開始學習,不需要遵照從前至後的順序閱讀。
本書每個案例中的“解決方案”部分表示對問題的思路解說,配合“操作方法”中的步驟和代碼更容易理解。“原理分析”部分則主要包括兩方面內容:代碼中部分方法或者語句的語法解釋,以及解決本疑難的理論依據。“知識擴展”部分包括與本例問題或者本代碼相關的知識補充,用於擴展讀者的知識範圍,同時也有利於理解本例代碼的思路。
本書是“Excel疑難千尋千解”叢書之一,可為讀者解決VBA編程的疑難,同時也是作者羅剛君的另一本著作《Excel VBA程式開發自學寶典》的升級版與配套教材。《Excel VBA程式開發自學寶典》重點在於講述VBA編程的基礎理論和語法,並配有“Excel百寶箱”大型外掛程式的設計過程詳解,該書適合完全沒有VBA基礎者學習,而本書是該書配套的案例,可以使讀者將理論付諸實踐,解決實際工作中的疑難及開發屬於自己的外掛程式。
售後服務
本書由Excel技巧網(技術社區)出品,讀者在閱讀中有任何疑難或者建議、BUG反饋等都可以到社區發貼,包括求助、交流,也可以在社區下載與本書相關的文檔。社區為本叢書開闢了一個專門的版面用於編讀往來,同時本書也配備了專屬的QQ群作為售後服務的聯繫方式,群號公布於上述網址,讀者可以申請到群中與作者面對面交流。
購買本書除可以獲取隨書光碟中的所有案例檔案外,還有兩項服務,包括實用外掛程式和Excel百寶箱。
實用外掛程式是指隨書光碟中的8個外掛程式,位於“贈品”資料夾中。8個外掛程式可以實現8個功能,同時學習外掛程式的開發思路。每個外掛程式附有原始碼,每句代碼都有含義注釋,且配有使用說明。外掛程式名稱如下:
1.二級選單
可以像數據有效性一樣產生下拉列表,但更強大,可以產生二級選單。
2.批註替換工具
可以批量替換批註文本的工具,且可設定區分大小寫與匹配方式。
3.選項選單設計
通它既可控制某些視圖對象的顯示與隱藏,又可學習選項選單的設計思路。
4.一鍵錄入代碼
用於提升編寫代碼的速度與準確度,單擊選單即可錄入常見代碼。
5.複選框管理
可以批量生成複選框,也可以批量刪除、勾選複選框,功能強大,操作方便。
6.歷史數據記錄器
將指定區域中每一個單元格的修改都記錄在案備查,且同時記錄修改時間。
7.增強型視圖控制
是內置的視圖工具的強化版本,更重要的是可以學習如何開發發功能區。
8.自定義函式封裝
自定義函式Connect是&運算的強化版本,功能強大,且配備代碼封裝教材。
除以上服務外,如果讀者同時購買本書和《Excel VBA程式開發自學寶典》,那么額外贈送三個實用外掛程式和一個百寶箱8.0正式版。外掛程式包括:
1.隱藏磁碟
可以將指定的磁碟隱藏起來,並禁用使用,從而確保檔案安全。
2.隱藏錯誤值
可以將工作表中的所有錯誤值在隱藏與顯示之間瞬間切換。
3.工作簿標籤
在選單產生工作簿標籤的外掛程式,讓工作簿切換更方便、快捷。
百寶箱8.0是利用VBA開發的大型外掛程式,百寶箱正版包括105個功能,可以大大強化Excel的功能,原價50元銷售。對於讀者可以免費贈送,可進入作者QQ群後向作者免費申請。
編著者
2010年8月28日
------------------------------------------------------------------------------------------------------------------------
申明:本書的所有案例和講解都允許作為視頻或面授培訓的教材,但使用者必須遵循約定,在培訓教材的明顯處註明“全部(或部分)案例出自‘Excel疑難千尋千解’叢書之《Excel 2010 VBA編程與實踐》”的字樣,以確保作者著作權不受侵犯。
目 錄
第1章 基礎理論 1
1.1 快速獲取幫助 1
疑難1 如何獲取所有控制項的屬性及屬性值 1
前期綁定與後期綁定 4
疑難2 部分對象在輸入時沒有成員列表提示,如何解決 5
沒有成員列表的對象 6
疑難3 如何找出錯誤語句及獲取錯誤原因並傳送到開發者信箱 6
利用ShellExecute函式調用程式的方式 8
1.2 程式防錯要點 8
疑難4 程式出錯有哪些原因 9
常見錯誤分析 9
疑難5 如何獲取VBA所有運行時錯誤的詳細說明 10
通過Error函式獲取錯誤信息 12
疑難6 如何在執行完畢後報告出錯次數及原因 13
捕捉所有錯誤信息 14
疑難7 如何開發完善的程式 15
數組區域對VBA程式的影響 17
疑難8 防錯語句在程式或者函式中套用有哪些優勢 17
利用Err.Number屬性判斷錯誤類型 19
1.3 代碼最佳化之道 19
疑難9 如何最佳化過程“隱藏偶數行” 19
關閉ScreenUpdating提升程式效率 20
疑難10 如何最佳化過程“設定字型屬性” 21
利用With簡化對象引用 22
疑難11 如何最佳化過程“隔三行求和” 22
減少單元格的寫入次數提升程式效率 23
疑難12 如何最佳化過程“B列所有圖片右移” 23
有針對性地使用Select方法 24
疑難13 如何最佳化過程“建工作表目錄” 25
VBA中數組的作用 26
疑難14 如何最佳化過程“成績評語” 26
區分適合置於循環體中的語句 27
疑難15 如何最佳化過程“刪除空單元格所在行” 27
不用循環而選擇多個符合條件的單元格 28
疑難16 如何最佳化過程“批量修改批註背景色” 28
區分父對象與子對象 29
疑難17 如何最佳化過程“隔一行插入一行” 30
計算模式對程式效率的影響 31
疑難18 如何最佳化過程“獲取外網IP位址” 31
使用變數的條件 32
1.4 提升代碼的兼容性 32
疑難19 程式的兼容性體現在哪些方面 33
作業系統對VBA的影響 33
疑難20 如何讓程式適應不確定對象 34
使用動態區域引用讓代碼具有更強的通用性 37
疑難21 如何讓程式兼容Excel多版本 37
識別Excel的版本號 39
疑難22 如何讓程式兼容英文和中文系統 40
利用API函式識別簡體、繁體中文與英文 41
疑難23 如何讓程式兼容簡體與繁體中文 41
讓代碼適應簡體與繁體系統 42
1.5 練習與思考 42
第2章 查找引用 44
2.1 本表查找 44
疑難24 如何查找不及格學生姓名並突出顯示 44
利用Union方法合併多區域 46
疑難25 如何一次性羅列表中三省員工的姓名 47
Find方法的使用技巧 49
疑難26 如何在輸入時逐步查找 50
通過KeyUp事件自動執行查詢 52
疑難27 如何按指定的格式查找 53
FindFormat的使用技巧 54
疑難28 如何實現字型格式替換 54
替換格式的條件 55
疑難29 如何查找所有“#”並標為上標 56
區分上標、下標的套用對象 57
疑難30 如何找出還款時間超過一年及未還款的客戶信息 57
日期函式Datedif的特性 59
疑難31 可以將查找到的所有數據串連並寫入剪貼簿中嗎 59
引用“Microsoft Forms 2.0 Object Library”的兩種方法 60
疑難32 可以創建一個工具列來方便查找嗎 61
設定lookat參數實現模糊查找 63
疑難33 如何快速羅列出每個產品最新報價 63
Collection對象的套用技巧 65
疑難34 如何在具有合併單元格的區域中多條件逐步查找 65
通過“MergeArea”屬性返回合併區域 67
疑難35 如何查找成績並分批發郵件 67
VBA中發編寫郵件正文時的換行符的表示法 68
2.2 跨表及多表查找 69
疑難36 如何引用數據表創建多級下拉選單 69
“ActionControl”對象的功能與限制 72
疑難37 如何將所有表中查找的完成數匯總到總表 73
利用SpecialCells定位實現快速查找 74
疑難38 在窗體中羅列每月產量冠軍名單 74
不採用循環,一次性找出最大值所在行 76
疑難39 如何將具有外部數據引用的單元格轉換成值 76
通過“[]”和“’!”定位具有外部連結的公式 77
疑難40 如何讓連結到其他表中隱藏單元格的超連結生效 77
通過xlSheetVisible屬性切換工作表顯示狀態 78
疑難41 如何實現多部門電話資料模糊查詢 79
Target與Activecell的區別 80
疑難42 如何實現所有未收貨款者在狀態欄隨機顯示 80
利用OnTime定時執行程式 82
2.3 檔案查找與轉換 82
疑難43 如何判斷指定檔案是否存在 82
利用DIR函式判斷檔案是否存在 83
疑難44 如何進行深度查找且創建檔案目錄 84
FileDialog對象的套用 85
疑難45 如何查找並備份所有“3月生產表” 86
CopyFile方法對檔案複製 88
疑難46 如何將所有Excel檔案轉換成XPS或PDF檔案 88
利用PrintOut方法將工作錶轉換成XPS檔案 90
疑難47 如何在網上鄰居的共享盤中查找並打開“單價表” 91
利用FileExists方法判斷檔案是否存在 92
疑難48 如何實現全盤查找“上海灘.MP3”,有則自動翻放 92
播放音樂的三種方式 94
疑難49 如何在網上自動搜尋與當前單元格同名的歌曲並播放 95
利用網頁地址索引歌曲並自動播放 96
2.4 圖片查找與引用 96
疑難50 如何瞬間刪除當前表中所有圖片 96
DrawingObjects與Shape對象的區別 97
疑難51 可以將簽名圖片複製到表中所有簽名處嗎 97
複製圖形對象與複製數據的區別 98
Selection代表什麼 99
疑難52 如何像vlookup引用數據一樣引用圖片 99
對圖片設定公式引用其他圖片 101
疑難53 如何通過窗體預覽指定目錄中的所有圖片 101
通過LoadPicture函式載入圖片 103
2.5 練習與思考 103
第3章 數據處理 104
3.1 定位的技巧 104
疑難54 如何選擇當前表0~100之外的數據 104
使用定位技術減少循環語句的循環次數 105
疑難55 如何定位奇數行 105
MOD配合SpecialCells定位奇數行 106
疑難56 可以瞬間定位並隱藏所有錯誤值嗎 107
通過SpecialCells定位錯誤值 108
疑難57 如何在輸入數據時自動定位下一行的目標單元格 109
限制刪除單元格的數據時不觸發工作表的Change事件 110
疑難58 可以將標題以外的區域轉換成“萬”為單位嗎 110
VBA中如何處理雙引號 111
疑難59 如何定位當前表最大值和最小值 112
調用工作表函式並配合Find方法查找最大值 113
疑難60 能定位並標識高於平均值的單元格嗎 113
VBA中數字、漢字的大小關係 115
疑難61 如何反向選擇工作表區域 115
輔助區的重要性 116
3.2 數據處理及格式轉換 116
疑難62 如何將單詞在大寫、小寫與首字母大寫間任意切換 116
利用StrConv函式對英文進行大寫、小寫和首字母大寫轉換 117
疑難63 如何將二維的入庫錶轉換成一維排版方式 118
利用數組提升代碼執行效率 119
疑難64 能否不用循環對選區進行橫向與縱向匯總 120
“R1C1”引用方式的優點 121
疑難65 如何批量地將字元串中的字母、數字和漢字分離出來 122
利用Like運算符區別漢字、數字和字母 123
疑難66 可以將表達式轉換成運算結果嗎 124
通過Evaluate計算表達式 125
疑難67 如何快速填充所有空單元格 125
利用Intersect引用區域提升代碼通用性 126
疑難68 如何將產品銷售地區瞬間轉換成下拉列表 126
利用代碼設定有效性序列 127
疑難69 數據有效性可以設定三級關聯下拉列表嗎 128
利用Dictionary對象獲取唯一值 130
疑難70 可以對職員信息表按學歷排序嗎 130
新舊版本中Sort的差異 131
疑難71 可以不打開工作簿而提取其數據嗎 132
VBA中調用公式實現從未打開的工作表中取值 133
疑難72 如何保護所有公式不能修改 134
切換Locked 屬性實現公式保護 135
疑難73 如何實現金額數據分解 135
MID取文本的特點 137
疑難74 VBA可以破解工作表密碼嗎 137
表的分類 138
疑難75 如何對分段編號進行合併轉換 138
減少數組變數空間分配次數的方法 140
疑難76 如何將5個大小相同選區的數據互換 141
Areas與CurrentRegion的區別 142
疑難77 如何取得1000之內的質數 142
質數的特性 143
疑難78 可以生成指定範圍的不重複隨機數嗎 144
Collection對象的優勢 145
疑難79 如何利用VBA對工作簿進行減肥 145
正確刪除單元格,減少檔案體積 146
疑難80 如何讓數字在文本與數值之間快速切換 147
在文本與數值間切換的VBA思路 148
疑難81 如何將“/”分隔的數據進行匯總 149
以“/”為分隔設定取其左右字元的思路最佳化 150
疑難82 可以對指定區域進行自動更正嗎 150
利用Replace方法實現限定區域的自動更正 151
疑難83 可以對包括“星期”的所有工作表同時添加公式嗎 151
VBA在單表和多表中輸入公式的區別 152
疑難84 在VBA中如何控制字元朗讀 153
利用Speech朗讀字元 153
疑難85 能實現貼上數據時跳過隱藏區嗎 154
如何確定單元格是否隱藏 156
疑難86 如何對相同值進行標識著色 156
疑難87 如何根據工資計算零鈔數量 159
獲取選區第一列及已用區域的交集 160
疑難88 如何批量實現區域數據真正四捨五入 161
通過round解決數據顯示的假象 162
疑難89 如何最佳化具有大量公式引用的數據計算 163
公式與VBA在計算上的區別 164
ClearContents與Clear的區別 164
3.3 單元格合併技巧 164
疑難90 可以在表格中合併同類項嗎 165
利用DisplayAlerts屬性關閉合併單元格的提示及加快執行速度 166
疑難91 如何實現按產品合併產量數據表 166
利用變數暫存數據,代替輔助區 168
疑難92 如何實現合併時保留所有數據,而拆分時可以還原 168
看不見的特殊字元的套用 171
疑難93 可以選擇當前表所有合併單元格嗎 171
定位合併單元格 172
疑難94 如何取消所有合併區域並且對所有單元格填充數據 172
合併區域的賦值方式 174
疑難95 合併單元格後仍然可以正常引用區域中的所有值嗎 174
複製合併屬性 175
疑難96 如何將指定單元格合併連結到一個選區 175
對一個區域追加連結 177
疑難97 跨頁合併單元格可以重新合併從而適應分頁列印嗎 178
判斷合併單元格是否跨頁 179
疑難98 可以讓合併單元格自動換行嗎 180
工作表事件代碼與普通過程的區別 181
3.4 報表合併與拆分 181
疑難99 如何合併所有工作表到一個表中 182
讓複製數據時既去除公式又不影響數值的顯示狀態 183
疑難100 如何實現多表合併匯總 184
利用相對引用公式批量合併數據,避免使用循環 185
疑難101 如何將多個工作簿中的所有工作表合併到一個工作表中 186
通過禁用工作簿重算提升代碼效率 189
疑難102 如何將多個工作簿數據合併到一個工作簿中 189
利用變數作為輔助進行條件判斷 193
疑難103 如何實現報表拆分 193
利用複製格式和複製數值實現完美複製,避免複製後顯示錯誤 195
疑難104 如何將工作簿中每個工作錶轉換為獨立工作表 197
根據版本號決定檔案格式 198
3.5 單元格顏色的綜合套用 199
疑難105 Excel不同版本在顏色處理方面有分別嗎 199
不同版本中顏色差異對程式的影響 200
疑難106 可以對Excel 2010的按顏色篩選再做擴展嗎 201
CurrentRegion與Usedrange對程式的影響 204
疑難107 如何讓按顏色排序可以在Excel 多版本間通用 204
借用輔助和調用老版本的Sort功能提升程式的通用性 206
疑難108 如何將顏色分類重排且通用於Excel多個版本 206
將顏色屬性轉換成數據,輔助程式執行 208
疑難109 可以按顏色對選區數據分類匯總嗎 208
修改數據源與修改顏色在VBA事件中的差異 211
疑難110 如何用函式對數據背景和字型按顏色匯總 212
通過Volatile讓函式聲明為易失性函式 213
3.6 重複數據處理 213
疑難111 如何清空重複值單元格並標識 214
Countif函式在去重複值中的套用 215
Countif函式的限制 216
疑難112 可以對重複出現的數據進行圈釋嗎 216
利用CircleInvalid對單元格加圈,以及CircleInvalid的限制 217
疑難113 如何篩選唯一值 218
使用錯誤處理語句配合Collection取唯一值 219
疑難114 可以在輸入重複值時提示用戶嗎 219
通過EnableEvents提高程式的執行效率 220
疑難115 如何對兩列數據提取相同項與不同項 221
利用Transpose函式實現區域轉數組 222
疑難116 如何將多行多列相同者保留最後一個數據 223
雙層Transpose配套Join實現橫向區域轉字元串 224
3.7 數據透視 224
疑難117 如何按職務或部門進行工資數據的透視分析 225
利用Excel 2003的透視表代碼提升程式兼容性 226
疑難118 如何實現多重數據透視 227
利用Array嵌套創建多重透視 228
疑難119 如何實現同時透視多工作簿中的多工作表數據 229
解決VBA創建透視表名稱衝突的兩種方法 230
3.8 練習與思考 231
第4章 報表列印 232
4.1 列印設定 232
疑難120 如何一次性設定“總表”以外工作表的頁腳 232
選擇工作表數量對頁腳的影響 233
疑難121 如何設定所有工作表的已用區域為列印區域 233
設定列印區域對數據列印的影響 234
疑難122 可以記錄工作簿的列印次數嗎 235
借用檔案自定義屬性記錄列印次數 235
4.2 特殊列印格式設計 236
疑難123 如何設計工資條列印格式 237
借用輔助列提升程式的容錯性 240
疑難124 如何列印工資卡 240
引用普通工作簿和載入宏工作簿的區別 243
疑難125 VBA可以實現對工作表分頁小計嗎 243
利用宏表函式Get.Document(50)獲取工作表頁數 246
疑難126 如何同時列印頂端標題和底端標題行 246
計算第一個分頁符的所在行號 253
疑難127 可以借用圖片實現底端標題列印嗎 253
Export與API方式將區域轉換成圖片的差異 255
疑難128 如何製作針式多聯印表機列印格式的報表 256
利用HPageBreaks.Add實現手動分頁 258
疑難129 如何實現雙面列印 259
中斷與禁止中斷程式 260
疑難130 可以僅僅列印活動單元格所在頁嗎 260
利用Location計算分頁符位置,配合循環判斷當前頁序號 261
4.3 練習與思考 262
第5章 函式開發 263
5.1 自定義函式基礎 263
疑難131 如何開發自定義函式 263
Office版本對自定義函式參數的影響 267
疑難132 函式與參數名規則如何 267
自定義函式命名規則 267
疑難133 自定義函式在不同版本中有何差異 269
顏色對自定義函式的影響 271
5.2 開發自定義函式 271
疑難134 如何對區域內混雜字元串中的數字求和 271
Excel公式對連續“+”的處理方式 273
疑難135 如何分離字元串中的數值、英文和漢字 273
正則表達式在字元處理中的優勢 274
疑難136 如何將文本混雜字元串及表達式轉換為值 274
正則表達式中數字、漢字的表達方式 276
疑難137 如何按時間段計算匯總金額 277
根據計算對象的規範性決定函式參數的個數 278
疑難138 如何對具有分隔設定的數據分類匯總 279
Split函式產生的數組的特點 280
疑難139 可以取姓名的漢語拼音首字母嗎 280
漢字與拼音首字母的對應關係 282
疑難140 超過15位的數字如何求和 282
Excel對數據計算的長度限制 284
疑難141 可以擴展Vlookup函式實現返回多個結果嗎 284
利用Find替代Vlookup實現多個數據查找 285
疑難142 如何利用函式創建檔案目錄 286
自定義函式中如何表示活動單元格 287
疑難143 可以用函式連線記憶體數據和區域中所有文本嗎 288
利用ParamArray聲明不確定個數的函式參數 290
疑難144 如何根據身份證號碼獲取出生日期、年齡和性別 290
身份證號碼所包含的個人信息 292
疑難145 如何將多個單元格中的人民幣數字合併且轉為大寫金額 293
聲明正確的類型最佳化函式效率 294
疑難146 如何計算兩個區域的不同項 294
自定義函式對大區域運算的限制 296
疑難147 如何突破Rank函式排名的限制 296
去重複值的3個方法 297
疑難148 如何實現按數據出現次數排序 298
Collection與字典的區別 300
疑難149 可以用一個函式將人民幣大小寫相互轉換嗎 300
通過拆分法理解代碼 302
疑難150 可以用函式改變引用區域的值嗎 303
利用自定義函式修改引用區域的值的兩種方法 305
疑難151 如何對兩個以逗號分隔的亂序字元串比較異同 306
Split函式嵌套套用從字元串中分別獲取品名與數量 307
疑難152 可以利用函式添加數據監控嗎 308
借用函式的易失性實現自動執行,類似於工作表事件 309
疑難153 可以讓函式的兩個參數全是可選參數嗎 310
將單個參數聲明為可選參數的方法 311
疑難154 可以利用函式批量對工作表命名嗎 312
借用類模組將工作簿級事件提升為應用程式級事件 314
疑難155 如何讓自定義函式運算結果是一個數組 314
函式返回數組的條件 316
5.3 自定義函式的管理 316
疑難156 如何對自定義函式添加說明 316
通過MacroOptions定義函式的幫助信息 318
疑難157 如何對自定義函式的參數添加幫助 318
借用REGISTER為自定義函式添加參數說明及分類 321
疑難158 可以將載入宏中的自定義函式複製到活動工作簿嗎 322
判斷用戶的設定是否允許訪問VBA工程 325
疑難159 如何封裝自定義函式,使其代碼不可查看 325
利用VB 6.0企業版封裝自定義函式 328
5.4 練習與思考 328
第6章 檔案目錄 329
6.1 檔案管理 329
疑難160 可以實現檔案雙向備份嗎 329
利用SaveCopyAs備份檔案 330
疑難161 如何讓檔案使用一次後即自我銷毀 331
檔案“自殺”的條件 331
疑難162 檔案有哪些屬性,如何控制它們 332
GetAttr函式搭配and運算符判斷檔案是否具備某屬性 333
疑難163 如何刪除指定目錄中一年前創建的檔案 334
疑難164 可以刪除18個月沒有使用的檔案嗎 335
用DATEDIF計算檔案閒置時間的技巧 336
疑難165 如何對檔案批量重命名 336
獲取檔案名稱的方法 338
疑難166 可以在收藏夾中對當前工作簿創建捷徑嗎 338
獲取收藏夾地址的方法 339
疑難167 文本檔案與Excel如何批量轉換 341
文本檔案與工作表的相互轉換 342
疑難168 如何實現將指定檔案作為附屬檔案傳送郵件 343
Outlook的前期綁定與後期綁定 344
6.2 目錄管理 345
疑難169 如何瞬間刪除D糟中所有空資料夾 345
將代表磁碟的字元串轉換成磁碟對象的方法 346
疑難170 如何獲取C糟以外所有磁碟的檔案目錄列表 346
通過FSO對象判斷某磁碟是否存在 347
疑難171 如何讓多版本Excel可以隨心所欲選擇打開方式 348
將Excel捷徑導入“Sendto”資料夾 349
疑難172 如何批量創建以本月每日日期命名的資料夾 350
利用DateSerial的糾錯功能計算本月天數 351
6.3 練習與思考 351
第7章 圖表設計 352
7.1 圖表編輯 352
疑難173 如何利用快捷鍵對選區創建圖表 352
對宏指定組合鍵的方式及特點 355
疑難174 如何批量修改圖表標籤 355
操作圖表標籤的條件 359
疑難175 如何批量移位標籤 359
移點陣圖表標籤的限制 362
疑難176 如何對圖表系列設定條件格式 362
填充圖表系列的兩種方法 365
7.2 多表管理 366
疑難177 如何將所有圖表大小調整一致且對齊 366
圖表名稱的特點 367
疑難178 如何將所有圖錶轉換成JPG檔案保存到資料夾 368
將圖片轉換為圖片的思路 369
7.3 練習與思考 369
第8章 圖形對象 370
8.1 圖形對象的基本操作 370
疑難179 可以僅僅刪除E列存放的圖表以外的圖形對象嗎 370
通過TopLeftCell和BottomRightCell定點陣圖片位置 371
疑難180 如何將工作簿所在路徑的圖片全部導入工作表 371
Pictures.Insert與Shapes.AddPicture的分別 373
疑難181 如何讓所有圖形對齊所在單元格左框線 374
通過統一TopLeftCell屬性對齊圖片 374
疑難182 如何實現所有圖片剛好適應所在單元格大小與邊距 375
行高與列寬的特點 376
疑難183 如何將選區轉換成圖片並保存到桌面 377
借用圖表中介實現區域轉圖片 379
8.2 批註的高級套用 379
疑難184 如何利用快捷鍵在單元格插入當前日期的批註 379
通過設定AutoSize屬性使批註框自動調整大小 380
疑難185 如何將指定列的數據批量追加到批註中 381
強制返回選區第一列的3種方法 383
疑難186 如何實現指定區域批量創建歷史記錄於批註中 383
讓代碼套用於所有工作簿的方法 386
疑難187 如何批量導入圖片到單元格的批註中 386
對批註框設定背景的條件 388
疑難188 可以對批註進行替換嗎 388
“Unload Me”、“End”和“Exit Sub”的區別 391
疑難189 如何在所有批註末尾追加當前日期 391
利用Isdate判斷批註最後一行是否為日期 392
疑難190 如何批量修改批註的外觀 392
聲明正確的變數類型及防錯 394
疑難191 可以改造默認的插入批註功能嗎 394
正確引用右鍵選單 395
8.3 圖形對象綜合套用 396
疑難192 可以讓圖片跟隨滑鼠移動嗎 396
利用DoEvents函式展示動畫過程 398
疑難193 如何創建圖片目錄與批量插入圖片 398
單元格的行高與列寬限制 401
疑難194 如何利用窗體預覽圖片 402
控制項背景圖片的3種顯示方式 404
疑難195 VBA中的窗體能否轉換成圖片保存在工作表中 404
調用API函式調用截圖的快捷鍵 405
疑難196 可以在工作表中導入GIF動畫嗎 406
播放GIF檔案時不能將檔案嵌入工作表 408
疑難197 如何實現輸入品名時查看當前路徑中的同名圖片 408
利用API計算圖片檔案的長與寬 409
疑難198 可以讓滑鼠指定圖片時放大圖片嗎 410
利用API函式獲取滑鼠指針坐標 413
疑難199 如何實現圖片批量導入並自動排版列印 413
利用FSO技術中的Getextensionname獲取檔案後綴名 417
8.4 練習與思考 417
第9章 窗體控制項 418
9.1 ActiveX控制項套用 418
疑難200 可以利用列表框強化數據有效性嗎 418
列表框相較數據有效性的靈活性 420
疑難201 如何利用複合框引用區域的唯一值 421
複合框調用數據的兩種方法及各自優勢 423
疑難202 利用複合框和列表框實現二級列表 423
MouseMove事件獲取列表框的值的技巧 426
9.2 窗體設計技巧 426
疑難203 如何實現利用快捷鍵啟用和關閉窗體 426
KeyPress事件可以檢查的按鍵及例外項目 428
疑難204 如何用一個窗體展現多個不同內容 429
分頁顯示的兩種方法 432
疑難205 如何用一個按鈕執行多個功能 433
利用PasswordChar屬性隱藏敏感字元 435
疑難206 如何讓日期輸入器窗體緊跟活動單元格 435
影響窗體Left、Top屬性的因素 436
疑難207 如何設計五角星窗體 437
顯示五角星窗體的方法 440
疑難208 VBA可以設計彩蛋嗎 440
MouseUp事件中Shift參數的作用 442
疑難209 如何通過窗體控制實現工作表隔行插入行 442
通過Shift參數控制Insert方法的單元格移動方向 446
疑難210 如何在窗體中開發右鍵快捷選單 446
創建自定義選單的基本思路 448
疑難211 窗體可以利用滑鼠自由調整大小嗎 449
利用API讓窗體可以自由拖動的思路 449
疑難212 在窗體Show狀態下可以調整控制項大小嗎 450
MouseMove事件中各參數的作用 452
疑難213 在窗體Show狀態下如何批量設定控制項格式 452
可修改控制項字型格式的幾種對話框 454
疑難214 在窗體Show狀態下如何調整控制項位置 455
MouseMove事件中Button參數的套用技巧 456
疑難215 如何檢測窗體中文本框的數據有效性 456
對文本框設定數據有效性檢驗的優勢 457
疑難216 如何設計懸浮感應式窗體 458
通過調整邊距控制窗體的動態效果 460
疑難217 可否瞬間備份所有窗體 460
VBA工程中的子對象分類 461
疑難218 能否對窗體中所有控制項同步縮放 462
窗體的Zoom屬性的特點 464
疑難219 能否通過代碼生成窗體及控制項 464
用代碼操作代碼、窗體和模組的優缺點 466
9.3 窗體與工作表之數據互動 467
疑難220 可以實現多工作表篩選並將結果導入窗體嗎 467
列表框的ColumnHeads屬性的特點 469
疑難221 多工作表數據輸入窗體如何設計 469
利用SetFocus方法控制焦點的轉移 472
疑難222 如何開發日曆工具箱 472
Excel對日期計算的限制 476
疑難223 如何實現多條件電話查詢 476
“TextBox1_Change”事件與“TextBox1_Exit”事件的異同 478
疑難224 如何開發複選框批量管理工具 478
認識複選框 481
疑難225 如何讓窗體控制項自適應工作表數據變化 481
用代碼創建新控制項 483
疑難226 可以讓列表框具有拖放功能嗎 484
控制項拖放相關的事件 485
本例僅支持一次拖放一行數據 486
疑難227 如何開發四則運算自動出題機 486
通過Rnd函式產生指定範圍的隨機數 488
9.4 開發動畫窗體 489
疑難228 如何讓窗體中的文本框循環滾動 489
控制動畫速度的兩種方式 491
疑難229 窗體中可以播放GIF和Flash動畫嗎 491
Excel播放GIF的原理 493
疑難230 如何讓窗體產生百葉窗動畫 493
疑難231 如何設計精美框線且帶動感的窗體 495
網頁設計與VBA 496
疑難232 如何設計動態的啟動畫面 497
網頁動畫的基本語法 499
疑難233 如何讓窗體中產生跟隨滑鼠指針的文字動畫 500
VBA設計動畫的限制 501
9.5 練習與思考 501
第10章 外掛程式開發 502
10.1 定製選單與工具列、功能區 502
疑難234 如何定製新選單、工具列與功能區 502
載入宏的特性與安裝方法 506
疑難235 可以任意組合內置命令嗎 507
CommandBars對象的ID參數的作用 508
疑難236 如何改造內置命令的功能 509
修改OnAction屬性替換內置功能 510
疑難237 可以提取所有內置圖示及其編號嗎 511
ActionControl屬性的作用 513
疑難238 可利用選單控制分頁符、零值和批註的顯隱嗎 513
Excel不同版本的自啟動路徑 515
疑難239 如何僅僅利用選單創建工作表目錄 516
讓一個過程執行多個選單執行多個功能的方法 518
疑難240 如何讓選單具有感應功能 518
State屬性的特點與套用 520
疑難241 如何讓選單和功能區中顯示自己的照片 521
控制功能區中圖片庫分布方式的4個參數 524
疑難242 如何設計可單選與複選的新工具列選單 525
具有單選與複選特效的圖示組合 528
10.2 開發通用外掛程式 528
疑難243 如何開發定位工具箱擴展Excel定位的功能 528
Excel定位的限制 533
疑難244 如何開發通用的多區域複製外掛程式 534
疑難245 如何開發單元格批量合併外掛程式 535
操作大面積區域時利用警告框提示用戶 538
疑難246 可以利用外掛程式輸入常用VBA代碼嗎 538
計算當前代碼行的行號 542
疑難247 如何利用外掛程式刪除當前工作簿所有代碼 543
ActiveWorkbook與Thisworkbook的分別 544
疑難248 如何利用TreeView控制項打造工作簿瀏覽器 545
ImageList控制項的特點與作用 547
10.3 封裝DLL外掛程式 548
疑難249 如何封裝數值與文本互換的DLL外掛程式 548
使用VB 6.0封裝Dll的4個重點 554
疑難250 如何設計字元串分離與表達式計算外掛程式 555
利用VB開發功能區的優勢 563
10.4 練習與思考 563
第11章 工資管理系統 564