對于大部分沒有編程基礎的職場人士來說,在學習VBA時往往會有很大的畏難情緒。本書正是針對這樣的人群,用淺顯易懂的語言和生動形象的比喻,并配合大量插畫,對Excel中看似復雜的概念和代碼,從簡單的宏錄制、VBA編程環(huán)境和基礎語法的介紹,到常用對象的操作與控制、執(zhí)行程序的自動開關—對象的事件、設計自定義的操作界面、調試與優(yōu)化編寫的代碼,都進行了形象的介紹。
《別怕,Excel VBA其實很簡單(第2版)》適合那些希望提高工作效率的職場人士,特別是經常需要處理和分析大量數(shù)據(jù)的用戶,也適合財經專業(yè)的高校師生閱讀。
《別怕,Excel VBA其實很簡單(第2版)》以經典案例為主導,呈現(xiàn)Excel VBA以一當十的核心功能!
精煉:以經典案例為主導,呈現(xiàn)Excel VBA以一當十的核心功能!
高效:一句頂一萬句的“懶人心法”,教你一鍵搞定所有報表!
Kevin
英文名、網名都是Kevin,圈內人慣稱K總(不是總經理的那個總,而是總版主的那個總)。曾經是追求辦公效率的會計一枚(好吧,我承認其實我就是喜歡偷懶),為此拼命折騰Office,特別是Excel。為了能和志同道合的人一起折騰Excel,1999年心血來潮創(chuàng)辦了ExcelHome,沒想到一搞就到了今天。不安分的小會計后來索性轉戰(zhàn)IT圈,鼓搗并多次實施信息化系統(tǒng)。這些年出過一些書,分享過一些網絡視頻教程,也經常到企業(yè)里鼓吹自己的偷懶經驗和定制解決方案,還因此被微軟年年評為編外優(yōu)秀工作者——哦,錯了,應該叫微軟全球zui有價值專家。未來計劃繼續(xù)說教之路,讓更多人走上高效辦公之路。
羅國發(fā)
網名ggsmart,葉楓。畢業(yè)就開始當老師,十余年的教學經歷讓我成長為一名經驗豐富的教學能手(自封的)。生活中閑時也沒什么愛好,就愛上上網,逛逛論壇,翻翻網頁,偶爾勾搭一下妹子(盡管從來沒有勾搭成功)。但我更愛的還是Excel,我愛研究學習Excel的方法,也愛分享Excel的技巧和教程。但我不是什么大俠,也不想做什么專家。我和你一樣,只是一位表哥,我只想用我的經驗告訴你:要學好Excel,其實很簡單。
目錄
第1章 Excel VBA,沒你想的那么難
1.1 Excel 中那些重復又重復的操作
1.1.1 你這樣用Excel,我要吐槽
1.1.2 重復操作,Excel 中隨處可見
1.1.3 重復的操作,就像重復的聲音
1.1.4 Excel 中也有類似的“錄音設備”
1.2 Excel 中的重復操作可以被錄制下來
1.2.1 Excel 中的“錄音設備”
1.2.2 用宏錄制器錄制下在Excel 中的操作
1.2.3 讓錄制下的操作再現(xiàn)一遍
1.3 錄制下的操作,還能這樣重現(xiàn)它
1.3.1 追求執(zhí)行速度,就用快捷鍵
1.3.2 希望直觀形象,可以用按鈕
1.4 錄制好的宏,為什么不能執(zhí)行了
1.4.1 宏不能執(zhí)行,是出于安全考慮
1.4.2 修改宏安全性,讓Excel 允許執(zhí)行所有宏
1.5 Excel 用什么記錄錄下的操作 /17
1.5.1 宏就是一串串可以控制和操作Excel 的代碼
1.5.2 學習VBA,就是學習編寫能控制和操作Excel 的代碼
1.6 VBA,就是我們和Excel 溝通的語言
1.6.1 要使用Excel,需要知道怎樣和它“溝通”
1.6.2 VBA,只是一種計算機編程語言的名字
1.7 Excel 已能錄制代碼,何需再動手編寫
1.7.1 錄制的宏,不能解決所有問題
1.7.2 只需簡單修改,便能讓宏的威力大增
1.7.3 自主編寫代碼,讓宏的功能更加靈活
第2章 認識編程工具,開始學習VBA 的第一步
2.1 應該在哪里編寫VBA 程序
2.2 了解VBA 的編程工具—VBE
2.2.1 可以用哪些方法打開VBE 窗口
2.2.2 VBE 窗口中都有什么
2.3 怎樣在VBE 中編寫VBA 程序
2.3.1 VBA 程序就是完成一個任務所需的一組VBA 代碼
2.3.2 看看VBA 程序都長什么樣
2.3.3 動手編寫一個VBA 程序
第3章 學習語法,了解VBA 編程應遵循的規(guī)則
3.1 語法,就是語言表達時應遵循的規(guī)則
3.1.1 不懂語法,表達就會出錯
3.1.2 作為一門編程語言,VBA 也有語法
3.1.3 別擔心,VBA 語法并不復雜
3.2 VBA 中的數(shù)據(jù)及數(shù)據(jù)類型
3.2.1 在Excel 中,數(shù)據(jù)就是保存在單元格中的信息
3.2.2 數(shù)據(jù)類型,就是對同一類數(shù)據(jù)的統(tǒng)稱
3.2.3 VBA 將數(shù)據(jù)分為哪些類型
3.2.4 為什么要對數(shù)據(jù)進行分類
3.3 VBA 中存儲數(shù)據(jù)的容器:變量和常量
3.3.1 程序中的數(shù)據(jù)保存在哪里
3.3.2 變量,就是給數(shù)據(jù)預留的內存空間
3.3.3 常量,通常用于存儲某些固定的數(shù)據(jù)
3.4 在程序中使用變量存儲數(shù)據(jù)
3.4.1 聲明變量,就是指定變量的名稱及可存儲的數(shù)據(jù)類型
3.4.2 還能用這些語句聲明變量
3.4.3 給變量賦值,就是把數(shù)據(jù)存儲到變量中
3.4.4 讓變量中存儲的數(shù)據(jù)參與程序計算
3.4.5 關于聲明變量,還應掌握這些知識
3.4.6 不同的變量,作用域也可能不相同
3.4.7 定義不同作用域的變量
3.5 特殊的變量—數(shù)組
3.5.1 數(shù)組,就是同種類型的多個變量的集合
3.5.2 怎么表示數(shù)組中的某個元素
3.5.3 聲明數(shù)組時應聲明數(shù)組的大小
3.5.4 給數(shù)組賦值就是給數(shù)組的每個元素分別賦值
3.5.5 數(shù)組的維數(shù)
3.5.6 聲明多維數(shù)組
3.5.7 聲明動態(tài)數(shù)組
3.5.8 這種創(chuàng)建數(shù)組的方法更簡單
3.5.9 關于數(shù)組,這些運算應該掌握
3.5.10 將數(shù)組中保存的數(shù)據(jù)寫入單元格區(qū)域
3.6 特殊數(shù)據(jù)的專用容器—常量
3.6.1 常量就像一次性的紙杯
3.6.2 聲明常量時應同時給常量賦值
3.6.3 常量也有不同的作用域
3.7 對象、集合及對象的屬性和方法
3.7.1 對象就是用代碼操作和控制的東西
3.7.2 對象的層次結構
3.7.3 集合就是多個同種類型的對象
3.7.4 怎樣表示集合中的某個對象
3.7.5 屬性就是對象包含的內容或具有的特征
3.7.6 對象和屬性是相對而言的
3.7.7 方法就是在對象上執(zhí)行的某個動作或操作
3.8 連接數(shù)據(jù)的橋梁,VBA 中的運算符
3.8.1 算術運算符
3.8.2 比較運算符
3.8.3 文本運算符
3.8.4 邏輯運算符
3.8.5 多種運算中應該先計算誰
3.9 VBA 中的內置函數(shù)
3.9.1 函數(shù)就是預先定義好的計算
3.9.2 VBA 中有哪些函數(shù)
3.10 控制程序執(zhí)行的基本語句結構
3.10.1 生活中無處不在的選擇
3.10.2 用If 語句解決VBA 中的選擇問題
3.10.3 使用Select Case 語句解決“多選一”的問題
3.10.4 用For...Next 語句循環(huán)執(zhí)行同一段代碼
3.10.5 用For Each...Next 語句循環(huán)處理集合或數(shù)組中的成員
3.10.6 用Do 語句按條件控制循環(huán)
3.10.7 使用GoTo 語句,讓程序轉到另一條語句去執(zhí)行
3.10.8 With 語句,簡寫代碼離不開它
3.11 Sub 過程,基本的程序單元
3.11.1 VBA 過程就是完成一個任務所需代碼的組合
3.11.2 Sub 過程的基本結構
3.11.3 應該把Sub 過程寫在哪里
3.11.4 Sub 過程的基本結構
3.11.5 過程的作用域
3.11.6 在過程中執(zhí)行另一個過程
3.11.7 向過程傳遞參數(shù) /125
3.12 自定義函數(shù),F(xiàn)unction 過程
3.12.1 Function 過程就是用VBA 自定義的函數(shù)
3.12.2 試寫一個自定義函數(shù)
3.12.3 使用自定義函數(shù)完成設定的計算
3.12.4 用自定義函數(shù)統(tǒng)計指定顏色的單元格個數(shù)
3.12.5 聲明Function 過程的語句結構
3.13 排版和注釋,讓編寫的代碼閱讀性更強
3.13.1 代碼排版,必不可少的習慣
3.13.2 為特殊語句添加注釋,讓代碼的意圖清晰明了
第4章 操作對象,解決工作中的實際問題
4.1 與Excel 交流,需要熟悉的常用對象
4.1.1 用VBA 編程就像在廚房里燒菜
4.1.2 VBA 通過操作不同的對象來控制Excel
4.1.3 使用VBA 編程,應該記住哪些對象
4.2 一切從我開始,最頂層的Application 對象
4.2.1 用ScreenUpdating 屬性設置是否更新屏幕上的內容
4.2.2 設置DisplayAlerts 屬性禁止顯示警告對話框
4.2.3 借助WorksheetFunction 屬性使用工作表函數(shù)
4.2.4 設置屬性,更改Excel 的工作界面
4.2.5 Application 對象的子對象
4.3 管理工作簿,了解Workbook 對象
4.3.1 Workbook 對象是Workbooks 集合中的一個成員
4.3.2 訪問對象的屬性,獲得工作簿文件的信息
4.3.3 用Add 方法創(chuàng)建工作簿
4.3.4 用Open 方法打開工作簿
4.3.5 用Activate 方法激活工作簿
4.3.6 保存工作簿文件
4.3.7 用Close 方法關閉工作簿
4.3.8 ThisWorkbook 與ActiveWorkbook
4.4 操作工作表,認識Worksheet 對象
4.4.1 引用工作表的3 種方法
4.4.2 用Add 方法新建工作表
4.4.3 設置Name 屬性,更改工作表的標簽名稱
4.4.4 用Delete 方法刪除工作表
4.4.5 激活工作表的兩種方法
4.4.6 用Copy 方法復制工作表
4.4.7 用Move 方法移動工作表
4.4.8 設置Visible 屬性,隱藏或顯示工作表
4.4.9 訪問Count 屬性,獲得工作簿中的工作表數(shù)量
4.4.10 容易混淆的Sheets 與Worksheets 對象
4.5 操作的核心,至關重要的Range 對象
4.5.1 用Range 屬性引用單元格
4.5.2 用Cells 屬性引用單元格
4.5.3 引用單元格,更簡短的快捷方式
4.5.4 引用整行單元格
4.5.5 引用整列單元格
4.5.6 用Union 方法合并多個單元格區(qū)域
4.5.7 Range 對象的Offset 屬性
4.5.8 Range 對象的Resize 屬性
4.5.9 Worksheet 對象的UsedRange 屬性
4.5.10 Range 對象的CurrentRegion 屬性
4.5.11 Range 對象的End 屬性
4.5.12 單元格中的內容:Value 屬性
4.5.13 訪問Count 屬性,獲得區(qū)域中包含的單元格個數(shù)
4.5.14 通過Address 屬性獲得單元格的地址
4.5.15 用Activate 與Select 方法選中單元格
4.5.16 選擇清除單元格中的信息
4.5.17 用Copy 方法復制單元格區(qū)域
4.5.18 用Cut 方法剪切單元格
4.5.19 用Delete 方法刪除指定的單元格
4.6 結合例子,學習怎樣操作對象
4.6.1 根據(jù)需求創(chuàng)建工作簿
4.6.2 判斷某個工作簿是否已經打開
4.6.3 判斷文件夾中是否存在指定名稱的工作簿文件
4.6.4 向未打開的工作簿中輸入數(shù)據(jù)
4.6.5 隱藏活動工作表外的所有工作表
4.6.6 批量新建指定名稱的工作表
4.6.7 批量對數(shù)據(jù)分類,并保存到不同的工作表中
4.6.8 將多張工作表中的數(shù)據(jù)合并到一張工作表中
4.6.9 將工作簿中的每張工作表都保存為單獨的工作簿文件
4.6.10 將多個工作簿中的數(shù)據(jù)合并到同一張工作表中
4.6.11 為同一工作簿中的工作表建一個帶鏈接的目錄
第5章 執(zhí)行程序的自動開關—對象的事件
5.1 用事件替程序安裝一個自動執(zhí)行的開關
5.1.1 事件就是能被對象識別的某個操作
5.1.2 事件是怎樣執(zhí)行程序的
5.1.3 讓Excel 自動響應我們的操作
5.1.4 能自動運行的Sub 過程—事件過程
5.1.5 利用事件,讓Excel 在單元格中寫入當前系統(tǒng)時間
5.2 使用工作表事件
5.2.1 工作表事件就是發(fā)生在Worksheet 對象中的事件
5.2.2 Worksheet 對象的Change 事件
5.2.3 禁用事件,讓事件過程不再自動執(zhí)行
5.2.4 一舉多得,巧用Change 事件快速錄入數(shù)據(jù)
5.2.5 SelectionChange 事件:當選中的單元格改變時發(fā)生
5.2.6 看看我該監(jiān)考哪一場
5.2.7 用批注記錄單元格中數(shù)據(jù)的修改情況
5.2.8 常用的Worksheet 事件
5.3 使用工作簿事件
5.3.1 工作簿事件就是發(fā)生在Workbook 對象中的事件
5.3.2 Open 事件:當打開工作簿的時候發(fā)生
5.3.3 BeforeClose 事件:在關閉工作簿之前發(fā)生
5.3.4 SheetChange 事件: 更改任意工作表中的單元格時發(fā)生
5.3.5 常用的Workbook 事件
5.4 不是事件的事件
5.4.1 Application 對象的OnKey 方法
5.4.2 Application 對象的OnTime 方法
5.4.3 讓文件每隔5 分鐘自動保存一次
第6章 設計自定義的操作界面
6.1 需要用什么來設計操作界面
6.1.1 為什么要替程序設計操作界面
6.1.2 控件,搭建操作界面必不可少的零件
6.1.3 在工作表中使用表單控件
6.1.4 在工作表中使用ActiveX 控件
6.1.5 表單控件和ActiveX 控件的區(qū)別
6.2 不需設置,使用現(xiàn)成的對話框
6.2.1 用InputBox 函數(shù)創(chuàng)建一個可輸入數(shù)據(jù)的對話框
6.2.2 用InputBox 方法創(chuàng)建交互對話框
6.2.3 用MsgBox 函數(shù)創(chuàng)建輸出對話框
6.2.4 用FindFile 方法顯示【打開】對話框
6.2.5 用GetOpenFilename 方法顯示【打開】對話框
6.2.6 用GetSaveAsFilename 方法顯示【另存為】對話框
6.2.7 用Application 對象的FileDialog 屬性獲取目錄名稱
6.3 使用窗體對象設計交互界面
6.3.1 設計界面,需要用到UserForm 對象
6.3.2 在工程中添加一個用戶窗體
6.3.3 設置屬性,改變窗體的外觀
6.3.4 在窗體上添加和設置控件的功能
6.4 用代碼操作自己設計的窗體
6.4.1 顯示用戶窗體
6.4.2 設置窗體的顯示位置
6.4.3 將窗體顯示為無模式窗體
6.4.4 關閉或隱藏已顯示的窗體
6.5 用戶窗體的事件應用
6.5.1 借助Initialize 事件初始化窗體
6.5.2 借助QueryClose 事件讓窗體自帶的【關閉】按鈕失效
6.5.3 窗體對象的其他事件
6.6 編寫代碼,為窗體中的控件設置功能
6.6.1 為【確定】按鈕添加事件過程
6.6.2 使用窗體錄入數(shù)據(jù)
6.6.3 給【退出】按鈕添加事件過程
6.6.4 給控件設置快捷鍵
6.6.5 更改控件的Tab 鍵順序
6.7 用窗體制作一個簡易的登錄窗體
6.7.1 設計登錄窗體的界面
6.7.2 設置初始用戶名和密碼
6.7.3 添加代碼,為控件指定功能
第7章 調試與優(yōu)化編寫的代碼
7.1 VBA 中可能會發(fā)生的錯誤
7.1.1 編譯錯誤
7.1.2 運行時錯誤
7.1.3 邏輯錯誤
7.2 VBA 程序的3 種狀態(tài)
7.2.1 設計模式
7.2.2 運行模式
7.2.3 中斷模式
7.3 Excel 已經準備好的調試工具
7.3.1 讓程序進入中斷模式
7.3.2 設置斷點,讓程序暫停執(zhí)行
7.3.3 使用Stop 語句讓程序暫停執(zhí)行
7.3.4 在【立即窗口】中查看變量值的變化情況
7.3.5 在【本地窗口】中查看變量的值及類型
7.3.6 使用【監(jiān)視窗口】監(jiān)視程序中的變量
7.4 處理運行時錯誤,可能會用到這些語句
7.4.1 On Error GoTo 標簽
7.4.2 On Error Resume Next
7.4.3 On Error GoTo 0
7.5 養(yǎng)成好習慣,讓代碼跑得更快一些
7.5.1 在程序中合理使用變量
7.5.2 不要用長代碼多次重復引用相同的對象
7.5.3 盡量使用函數(shù)完成計算
7.5.4 不要讓代碼執(zhí)行多余的操作
7.5.5 合理使用數(shù)組
7.5.6 如果不需要和程序互動,就關閉屏幕更新