




已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VBA簡(jiǎn)易教程 1 直到90年代早期 使應(yīng)用程序自動(dòng)化還是充滿挑戰(zhàn)性的領(lǐng)域 對(duì)每個(gè)需要自動(dòng)化的應(yīng)用程序 人們不得不學(xué)習(xí)一種不同的自動(dòng)化語(yǔ)言 例如 可以用EXCEL的宏語(yǔ)言來(lái)使EXCEL自動(dòng)化 使用WORDBASIC使WORD自動(dòng)化 等等 微軟決定讓它開(kāi)發(fā)出來(lái)的應(yīng)用程序共享一種通用的自動(dòng)化語(yǔ)言 VisualBasicForApplication VBA 可以認(rèn)為VBA是非常流行的應(yīng)用程序開(kāi)發(fā)語(yǔ)言VASUALBASIC的子集 實(shí)際上VBA是 寄生于 VB應(yīng)用程序的版本 VBA和VB的區(qū)別包括如下幾個(gè)方面 1 VB是設(shè)計(jì)用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序 而VBA是使已有的應(yīng)用程序 EXCEL等 自動(dòng)化2 VB具有自己的開(kāi)發(fā)環(huán)境 而VBA必須寄生于已有的應(yīng)用程序 3 要運(yùn)行VB開(kāi)發(fā)的應(yīng)用程序 用戶不必安裝VB 因?yàn)閂B開(kāi)發(fā)出的應(yīng)用程序是可執(zhí)行文件 EXE 而VBA開(kāi)發(fā)的程序必須依賴于它的 父 應(yīng)用程序 例如EXCEL 盡管存在這些不同 VBA和VB在結(jié)構(gòu)上仍然十分相似 事實(shí)上 如果你已經(jīng)了解了VB 會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???VBA究竟是什么 更確切地講 它是一種自動(dòng)化語(yǔ)言 它可以使常用的程序自動(dòng)化 可以創(chuàng)建自定義的解決方案 VBA是什么 2 EXCEL環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn) 也許你想知道VBA可以干什么 使用VBA可以實(shí)現(xiàn)的功能包括 使重復(fù)的任務(wù)自動(dòng)化 自定義EXCEL工具欄 菜單和界面 簡(jiǎn)化模板的使用 自定義EXCEL 使其成為開(kāi)發(fā)平臺(tái) 創(chuàng)建報(bào)表 對(duì)數(shù)據(jù)進(jìn)行復(fù)雜的操作和分析 3 EXCEL環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn) 用EXCEL作為開(kāi)發(fā)平臺(tái)有如下原因 EXCEL本身功能強(qiáng)大 包括打印 文件處理 格式化和文本編輯 EXCEL內(nèi)置大量函數(shù) EXCEL界面熟悉 可連接到多種數(shù)據(jù)庫(kù) 4 錄制簡(jiǎn)單的宏 在介紹學(xué)習(xí)VBA之前 應(yīng)該花幾分鐘錄制一個(gè)宏 新術(shù)語(yǔ) 宏 指一系列EXCEL能夠執(zhí)行的VBA語(yǔ)句 以下將要錄制的宏非常簡(jiǎn)單 只是改變單元格顏色 請(qǐng)完成如下步驟 打開(kāi)新工作簿 確認(rèn)其他工作簿已經(jīng)關(guān)閉 選擇A1單元格 調(diào)出 常用 工具欄 選擇 工具 宏 錄制新宏 輸入 改變顏色 作為宏名替換默認(rèn)宏名 單擊確定 選擇 格式 的 單元格 選擇 圖案 選項(xiàng)中的紅色 單擊 確定 單擊 停止錄制 工具欄按鈕 結(jié)束宏錄制過(guò)程 宏名最多可為255個(gè)字符 并且必須以字母開(kāi)始 其中可用的字符包括 字母 數(shù)字和下劃線 5 執(zhí)行宏 選擇任何一個(gè)單元格 比如A3 選擇 工具 宏 宏 顯示 宏 對(duì)話框 選擇 改變顏色 選擇 執(zhí)行 則A3單元格的顏色變?yōu)榧t色 當(dāng)執(zhí)行一個(gè)宏時(shí) EXCEL按照宏語(yǔ)句執(zhí)行的情況就像VBA代碼在對(duì)EXCEL進(jìn)行 遙控 但VBA的 遙控 不僅能使操作變得簡(jiǎn)便 還能使你獲得一些使用EXCEL標(biāo)準(zhǔn)命令所無(wú)法實(shí)現(xiàn)的功能 而且 一旦熟悉了EXCEL的 遙控 你都會(huì)奇怪自己在沒(méi)有這些 遙控 的情況下 到底是怎么熬過(guò)來(lái)的 要執(zhí)行剛才錄制的宏 可以按以下步驟進(jìn)行 試著選擇其它單元格和幾個(gè)單元格組成的區(qū)域 然后再執(zhí)行宏 以便加深印象 6 查看錄制的代碼 改變顏色 是宏的名稱 注意 有一小圓點(diǎn) 它的作用在于簡(jiǎn)化語(yǔ)句 小圓點(diǎn)代替出現(xiàn)在With后的詞 它是With結(jié)構(gòu)的一部分 Sub改變顏色 改變顏色Macro xw記錄的宏2000 6 10 WithSelection Interior ColorIndex 3 Pattern xlSolid PatternColorIndex xlAutomaticEndWithEndSub 到底是什么在控制EXCEL的運(yùn)行呢 你可能有些疑惑 好 讓我們看看VBA的語(yǔ)句吧 7 編輯錄制的代碼 Sub改變顏色 改變顏色Macro xw記錄的宏2000 6 10 WithSelection Interior ColorIndex 3EndWithEndSub 在上一節(jié) 我們錄制了一個(gè)宏并查看了代碼 代碼中有兩句實(shí)際上并不起作用 哪兩句 現(xiàn)在 在宏中作一個(gè)修改 刪除多余行 直到和下面代碼相同 完成后 在工作表中試驗(yàn)一下 你會(huì)發(fā)現(xiàn)結(jié)果和修改前的狀況一樣 在With語(yǔ)句前加入一行 Range A5 Select試著運(yùn)行該宏 則無(wú)論開(kāi)始選擇哪個(gè)單元格 宏運(yùn)行結(jié)果都是使A5單元格變紅 8 錄制宏的局限性 錄制的宏無(wú)判斷或循環(huán)能力 人機(jī)交互能力差 即用戶無(wú)法進(jìn)行輸入 計(jì)算機(jī)無(wú)法給出提示 無(wú)法顯示EXCEL對(duì)話框 無(wú)法顯示自定義窗體 希望自動(dòng)化的許多EXCEL過(guò)程大多都可以用錄制宏來(lái)完成 但是宏記錄器存在以下局限性 通過(guò)宏記錄器無(wú)法完成的工作有 9 為宏指定快捷鍵 你也許希望為經(jīng)常使用的宏指定快捷鍵 當(dāng)給宏指定了快捷鍵后 就可以用快捷鍵來(lái)執(zhí)行宏 而不必通過(guò) 工具 菜單 注意 當(dāng)包含宏的工作簿打開(kāi)時(shí)間 為宏指定快捷鍵會(huì)覆蓋EXCEL默認(rèn)的快捷鍵 例如 把CTRL C指定給某個(gè)宏 那么CTRL C就不再執(zhí)行復(fù)制命令 可以在創(chuàng)建宏時(shí)指定快捷鍵 也可以在創(chuàng)建后再指定 要在創(chuàng)建 錄制 宏時(shí)指定快捷鍵 只須在錄制宏時(shí)在輸入宏名后 在 快捷鍵 文本框中輸入相應(yīng)的鍵 錄制宏后指定快捷鍵也很簡(jiǎn)單 只需選擇 工具 宏 顯示 宏 對(duì)話框 選擇要指定快捷鍵的宏 再單擊 選項(xiàng) 按鈕 通過(guò) 選項(xiàng) 對(duì)話框進(jìn)行設(shè)置 10 決定宏保存的位置 宏可保存在三種可能的位置 1 當(dāng)前工作簿 只有該工作簿打開(kāi)時(shí) 該宏才可用 2 新工作簿 3 個(gè)人宏工作簿 11 個(gè)人宏工作簿 個(gè)人宏工作簿 是為宏而設(shè)計(jì)的一種特殊的具有自動(dòng)隱藏特性的工作簿 第一次將宏創(chuàng)建到個(gè)人宏工作簿時(shí) 會(huì)創(chuàng)建名為 PERSONAL XLS 的新文件 如果該文件存在 則每當(dāng)EXCEL啟動(dòng)時(shí)會(huì)自動(dòng)將此文件打開(kāi)并隱藏在活動(dòng)工作簿后面 如果你要讓某個(gè)宏在多個(gè)工作簿都能使用 那么就應(yīng)當(dāng)創(chuàng)建個(gè)人宏工作簿 并將宏保存于其中 個(gè)人宏工作簿保存在 XLSTART 文件夾中 具體路徑為 C WINDOWS Profiles ApplicationData Microsoft Excel XLSTART 12 個(gè)人宏工作簿 試著練習(xí)一下保存一個(gè)簡(jiǎn)單的宏到個(gè)人宏工作簿 該宏為文本加下劃線并改為斜體 步驟如下 1 建立一個(gè)名為 HOUR2 的工作簿 選擇 工具 宏 錄制新宏 顯示 錄制新宏 對(duì)話框 2 輸入 格式化文本 作為宏名 3 從 保存在 下拉框中選擇 個(gè)人宏工作簿 4 單擊 確定 按鈕 現(xiàn)在進(jìn)入錄制模式 5 單擊 斜體 工具欄按鈕 一段時(shí)間內(nèi) 鼠標(biāo)出現(xiàn)沙漏 特別是在第一次創(chuàng)建個(gè)人宏工作簿時(shí) 因?yàn)镋XCEL在創(chuàng)建該工作簿 6 單擊 下劃線 按鈕 7 停止錄制 13 使用并編輯個(gè)人宏工作簿中的宏 剛才已經(jīng)保存了一個(gè)宏到個(gè)人宏工作簿 現(xiàn)在可以在任何工作簿中使用該宏 可按如下步驟操作 現(xiàn)在A3單元格中 你的名字變?yōu)樾斌w字還帶有下劃線 選擇 窗口 取消隱藏 可以將PERSONAL XLS顯示出來(lái) 通過(guò)VBA編輯器可以在其中的模塊中找到 格式化文本 這個(gè)宏 在VBA編輯器中可以對(duì)該宏進(jìn)行直接編輯或者刪除 關(guān)閉所有EXCEL工作簿 任意打開(kāi)一個(gè)EXCEL文件 EXCEL自動(dòng)將個(gè)人宏工作簿同時(shí)打開(kāi)并隱藏 在A3中輸入您的名字 選擇 工具 宏 顯示宏對(duì)話框 現(xiàn)在可以在宏列表中看到 格式化文本 這個(gè)宏 選擇 格式化文本 宏 并執(zhí)行 14 將宏指定給按鈕 按鈕 是最常見(jiàn)的界面組成元素之一 通過(guò)使用 窗體 工具欄 可以為工作簿中的工作表添加按鈕 在創(chuàng)建完一個(gè)按鈕后 可以為它指定宏 然后你的用戶就可以通過(guò)單擊按鈕來(lái)執(zhí)行宏 在本練習(xí)中 將創(chuàng)建一個(gè)按鈕 并為它指定一個(gè)宏 然后用該按鈕來(lái)執(zhí)行宏 具體步驟如下 打開(kāi) HOUR2 工作簿 調(diào)出 窗體 工具欄 單擊 窗體 工具欄中的 按鈕 控件 在希望放置按鈕的位置按下鼠標(biāo)左鍵 拖動(dòng)鼠標(biāo)畫(huà)出一個(gè)矩形 在Excel自動(dòng)出現(xiàn)的 指定宏 對(duì)話框中 選擇 格式化文本 單擊 確定 試著在某個(gè)單元格中輸入文本 單擊按鈕運(yùn)行該宏 15 將宏指定給圖片或其他對(duì)象 要執(zhí)行宏有多種方法可以選擇 可以將宏指定給按鈕等控件 還可以指定給圖片 自定義工具欄 窗體甚至可以將宏指定給某個(gè) 事件 比如單擊工作表 雙擊工作表 激活工作表 打開(kāi)工作簿等等 事件 是一個(gè)重要的概念 除此而外 方法 對(duì)象 都是將來(lái)你會(huì)經(jīng)常接觸到的 指定宏到圖片十分簡(jiǎn)單 只需單擊某個(gè)圖片 單擊快捷菜單中的 指定宏 進(jìn)行設(shè)置即可 如果不希望在工作表上添加控件或圖片執(zhí)行宏 還有一種方法可以選擇 將宏指定給 工具欄按鈕 可按如下步驟進(jìn)行 打開(kāi) HOUR2 工作簿 選擇 工具 定義 顯示 自定義工具欄 對(duì)話框 從 類別 列表框中選擇 宏 從 命令 列表框中選擇 自定義按鈕 16 將 自定義按鈕 拖動(dòng)到工具欄 右鍵單擊該按鈕 選擇 指定宏 顯示 指定宏 對(duì)話框 選擇 格式化文本 并確定 單擊 關(guān)閉 按鈕 關(guān)閉 自定義工具欄 對(duì)話框 試著在某個(gè)單元格中輸入文本 單擊工具欄按鈕運(yùn)行該宏 17 EXCEL開(kāi)發(fā)過(guò)程簡(jiǎn)介 需要對(duì)以下問(wèn)題有個(gè)大致的概念 誰(shuí)使用這決定了程序的操作難度及界面感觀 數(shù)據(jù)來(lái)源和保存在哪里這決定了程序的結(jié)構(gòu) 如何操作這將決定程序的界面和細(xì)節(jié) 數(shù)據(jù)處理的結(jié)果最終決定程序的價(jià)值 18 認(rèn)識(shí)不同的控件 開(kāi)始時(shí)請(qǐng)關(guān)閉所有工作簿 打開(kāi)一個(gè)新工作簿并另存為 HOUR3 在工具欄上單擊鼠標(biāo)右鍵 從快捷菜單中選擇 窗體 顯示 窗體 工具欄 其中有16個(gè)控件 只有9個(gè)可放到工作表內(nèi) 19 向工作表添加控件 創(chuàng)建新工作簿并另存為 HOUR3 顯示 窗體 工具欄 選擇 標(biāo)簽 控件 將鼠標(biāo)定位到E1 此時(shí)鼠標(biāo)變成小十字 按下左鍵 拖動(dòng)大約四個(gè)單元格長(zhǎng)度 放開(kāi)鼠標(biāo)左鍵 如果希望控件大小易于控制 可在創(chuàng)建該控件時(shí)按下ALT拖動(dòng) 在標(biāo)簽1上單擊右鍵 選擇 編輯文字 現(xiàn)在可以輸入文字 完成后 單擊任何單元格退出文字編輯 通過(guò)以上步驟可以添加其它控件到工作表中 不再贅述 用EXCEL設(shè)計(jì)界面十分簡(jiǎn)單 要將控件添加到工作表上 可以按以下步驟操作 20 設(shè)置控件的特性 設(shè)置控件的特性 可以按以下步驟操作 選中先前創(chuàng)建的復(fù)選框控件 如果沒(méi)有馬上創(chuàng)建一個(gè) 右擊該控件 選擇 控制 選項(xiàng)卡 在 單元格鏈接 中輸入A1并確定 單擊任意單元格 退出設(shè)置 用鼠標(biāo)左鍵單擊復(fù)選框 A1出現(xiàn)TRUE 這意味著該控件被選中 再次單擊該控件 A1出現(xiàn)FALSE 選擇剛才創(chuàng)建的滾動(dòng)條控件 并調(diào)出 設(shè)置控件格式 對(duì)話框 在 單元格鏈接 中輸入A3并確定 在滾動(dòng)條外任意單元格單擊鼠標(biāo)左鍵 使?jié)L動(dòng)條不被選擇 用鼠標(biāo)單擊滾動(dòng)條上的箭頭 則A1的數(shù)值增加1 繼續(xù)單擊則A1的數(shù)值繼續(xù)增加 保存并關(guān)閉該工作簿 21 給控件命名 使用用戶窗體 當(dāng)創(chuàng)建一個(gè)控件時(shí)EXCEL會(huì)自動(dòng)給它指定一個(gè)名字 但不便于理解和記憶 為控件取名的方法基本和給單元格或區(qū)域取名的方法相同 選中某個(gè)控件 再在位于公式欄上的 名字 編輯框輸入控件名字 這樣就給控件更改了名字 如果希望創(chuàng)建專業(yè)級(jí)的應(yīng)用程序 并且方便用戶輸入數(shù)據(jù) 那么應(yīng)該使用用戶窗體 用戶窗體可以作為程序的對(duì)話框和窗口 向用戶窗體添加控件基本類似于向工作表添加控件 然而第一步要?jiǎng)?chuàng)建一個(gè)用戶窗體 這可以通過(guò)VBA編輯器實(shí)現(xiàn) 具體按以下步驟操作 1 打開(kāi) HOUR3 工作簿 選擇 工具 宏 VBA編輯器 打開(kāi)VBA編輯器 2 在VBA編輯器中選擇工具欄上的 插入用戶窗體 按鈕或者選擇 插入 菜單 從下拉菜單中選擇 用戶窗體 現(xiàn)在 VBA編輯器中出現(xiàn)一個(gè)名為 USERFORM1 的窗體 控件工具箱 同時(shí)出現(xiàn) 在其中有許多已經(jīng)熟悉的控件 另外還有一些新的控件 這些新的控件是 22 使用用戶窗體 切換按鈕 該控件如果被選中 那么會(huì)保持被按下的狀態(tài) 如果再次單擊它就恢復(fù)為沒(méi)有按下的狀態(tài) EXCEL工具欄中有幾個(gè)這樣的按鈕 例如 全屏顯示 加粗 下劃線 以及 窗體 工具欄中的 切換網(wǎng)格 等 選項(xiàng)卡條 TabStrip 它是包含多個(gè)選項(xiàng)卡的控件 通常用來(lái)對(duì)相關(guān)的信息進(jìn)行組織或分類 例如 你也許希望用選項(xiàng)卡條來(lái)顯示各個(gè)地區(qū)的銷售信息 可以給每個(gè)地區(qū)設(shè)置一個(gè)選項(xiàng)卡 在默認(rèn)時(shí) 選項(xiàng)卡包含兩頁(yè) 分別叫做TAB1和TAB2 可以添加更多的選項(xiàng)卡 多頁(yè) 外觀類似選項(xiàng)卡條 是包含一頁(yè)或多頁(yè)的控件 選項(xiàng)卡條給人相似的外觀 而多頁(yè)控件的各頁(yè)包含各自不同的控件 有各自不同的布局 多頁(yè)的例子很多 例如 設(shè)置控件格式 對(duì)話框和 工具 菜單中的 選項(xiàng) 對(duì)話框 以及 格式 菜單中的 單元格 對(duì)話框 23 使用用戶窗體 圖像控件 它允許向窗體上放置圖片 圖片格式須為 bmp cur gif ico jpg wmf RefEdit 這是工具箱中默認(rèn)情況下的最后一個(gè)控件 它外觀象文本框 通過(guò)這個(gè)控件可以將用戶窗體折疊起來(lái) 以便選擇單元格區(qū)域 在對(duì)用戶窗體設(shè)計(jì)得滿意時(shí) 可以對(duì)其進(jìn)行預(yù)覽 方法是在VBA編輯器中選擇該窗體 單擊 運(yùn)行 菜單中的三角符號(hào) 運(yùn)行子過(guò)程 用戶窗體 三角符號(hào)在VBA工具欄上也可能看得到 旁邊是一個(gè)垂直的等于符號(hào) 最右邊是個(gè)小正方形符號(hào) 它們類似于錄音機(jī)上的按鈕 運(yùn)行窗體的另一個(gè)方法是按F5鍵 小結(jié) 24 代碼存在的位置 VBA代碼必須存放在某個(gè)位置 這個(gè)地方就是模塊 有兩種基本類型的模塊 標(biāo)準(zhǔn)模塊和類模塊 模塊中的每個(gè)過(guò)程或者是函數(shù)過(guò)程 或者是子程序概念 新術(shù)語(yǔ) 你的大部分工作集中在標(biāo)準(zhǔn)模塊中 簡(jiǎn)稱為模塊 當(dāng)錄制宏時(shí)如果不存在模塊 EXCEL自動(dòng)創(chuàng)建一個(gè) EXCEL和VBA不關(guān)心代碼存放在哪一個(gè)模塊中 只要代碼存在于打開(kāi)的工作簿中即可 模塊 它是作為一個(gè)單元保存在一起的VBA定義和過(guò)程的集合 類模塊 VBA允許你創(chuàng)建自己的對(duì)象 對(duì)象的定義包含在類模塊中 25 對(duì)模塊的概覽 SubcmdSmallFont Click WithSelection Font Name Arial FontStyle Regular Size 16EndWithEndsub 過(guò)程被定義為VBA代碼的一個(gè)單元 過(guò)程中包括一系列用于執(zhí)行某個(gè)任務(wù)或是進(jìn)行某種計(jì)算的語(yǔ)句 上面列出的過(guò)程實(shí)際上是一個(gè)事件過(guò)程 這個(gè)過(guò)程的名字是由一個(gè)按鈕對(duì)象的名字CmdSmallFont和一個(gè)事件的名字Click組成的 兩者之間用下劃線分開(kāi) 當(dāng)單擊這個(gè)命令按鈕時(shí) 就會(huì)運(yùn)行這個(gè)事件過(guò)程 26 函數(shù)過(guò)程通常情況下稱為函數(shù) 要返回一個(gè)數(shù)值 這個(gè)數(shù)值通常是計(jì)算的結(jié)果或是測(cè)試的結(jié)果 例如False或True 正如前面所說(shuō) 可以用VBA創(chuàng)建自定義函數(shù) 實(shí)際上可以在工作表上使用你創(chuàng)建的函數(shù) 程序清單4 2是一個(gè)計(jì)算價(jià)格的10 為運(yùn)費(fèi)的簡(jiǎn)單例子 簡(jiǎn)單的用戶定義函數(shù)示例 PublicFunctionShipping Price Shipping Price 0 1EndFunction 這個(gè)函數(shù)使用一個(gè)參數(shù) Price 子程序和函數(shù)都可以使用參數(shù) Price可以是數(shù)字和單元格引用 27 創(chuàng)建過(guò)程 創(chuàng)建第一個(gè)過(guò)程需要兩個(gè)基本步驟 首先 需要向工作簿中添加一個(gè)模塊 接著需要向模塊中添加一個(gè)工程 對(duì)于創(chuàng)建的每一個(gè)應(yīng)用程序 只需添加一次模塊 可以使用多個(gè)模塊 但這是不必要的 某些開(kāi)發(fā)者喜歡使用多個(gè)模塊 以便根據(jù)他們的目的或者窗體對(duì)過(guò)程進(jìn)行組織 在本練習(xí)中 創(chuàng)建的過(guò)程只顯示一個(gè)消息框 在本練習(xí)中創(chuàng)建的過(guò)程只顯示一個(gè)消息框 在本練習(xí)中使用Msgbox是為了提供一個(gè)可見(jiàn)的例子 雖然我們還沒(méi)有介紹過(guò)Msgbox語(yǔ)句 但是在本例中將使用它 要?jiǎng)?chuàng)建該過(guò)程 請(qǐng)按如下步驟進(jìn)行 打開(kāi)一個(gè)新工作簿 選擇 工具 宏 VisualBasic編輯器 打開(kāi)VBA編輯器窗口 28 在 VBA編輯器的左面 可以看到 工程資源管理器 窗口 在工程資源管理器窗口的 Thisworkbook 上單擊鼠標(biāo)右鍵 選擇 插入 模塊 這樣就將一個(gè)模塊添加到應(yīng)用程序中了 如果你沒(méi)有看見(jiàn) 工程資源管理器 窗口 可以按Ctrl R 選擇 插入 過(guò)程 顯示 添加過(guò)程 對(duì)話框 輸入 第一個(gè)工程 作為過(guò)程名字 在 類型 分組框中 確認(rèn)選擇了 子程序 單擊 確定 按鈕 這樣一個(gè)新的過(guò)程就添加到模塊中了 可以在模塊中看到以PublicSub第一個(gè)過(guò)程 開(kāi)始 以EndSub結(jié)束的語(yǔ)句結(jié)構(gòu) 29 6 在過(guò)程中插入光標(biāo) 輸入以下語(yǔ)句并回車 Msgbox 這是我的第一個(gè)過(guò)程 在輸入Msgbox后 會(huì)自動(dòng)彈出一個(gè)消息框告訴你有關(guān)這條命令的信息 稱之為自動(dòng)列表技術(shù) 輸入完成的過(guò)程如下所示 PublicSub第一個(gè)過(guò)程 Msgbox 這是我的第一個(gè)過(guò)程 EndSub VBA對(duì)子程序和函數(shù)有如下的命名規(guī)則 名字中可以包含字母數(shù)字和下劃線 名字中不能包含空格句號(hào)驚嘆號(hào) 也不能包含字符 名字最多可以包含255個(gè)字符 30 運(yùn)行宏 創(chuàng)建這個(gè)過(guò)程后 可以運(yùn)行一下 運(yùn)行一個(gè)過(guò)程有幾種方法 可以直接使用 運(yùn)行 菜單 運(yùn)行子程序 用戶窗體 工具欄按鈕或按下F5鍵 要運(yùn)行一個(gè)過(guò)程 可以按照如下步驟 1 單擊 運(yùn)行子程序 用戶窗體 工具欄按鈕 過(guò)程執(zhí)行并顯示一個(gè)消息框 2 單擊消息框之中的 確定 按鈕 關(guān)閉該消息框 31 保存對(duì)模塊所做的改變 要保存新過(guò)程 需要保存過(guò)程所駐留的工作簿 可以用VBA編輯器保存工作簿 具體步驟如下 選擇 文件 保存工作簿 因?yàn)楸竟ぷ鞑具€沒(méi)有保存過(guò) 所以要給它命名 輸入 HOUR4 作為文件名并按回車鍵 則工作簿和模塊與過(guò)程都保存下來(lái)了 32 變量 變量是用于臨時(shí)保存數(shù)值的地方 每次應(yīng)用程序運(yùn)行時(shí) 變量可能包含不同的數(shù)值 而在程序運(yùn)行時(shí) 變量的數(shù)值可以改變 為了說(shuō)明為什么需要變量 可以按照如下步驟創(chuàng)建一個(gè)簡(jiǎn)單的過(guò)程 1 創(chuàng)建一個(gè)名為 你叫什么名字 的過(guò)程 2 在過(guò)程中輸入如下代碼 Inputbox 輸入你的名字 3 按下F5鍵運(yùn)行過(guò)程 這時(shí)會(huì)顯示一個(gè)輸入框 要求輸入你的名字 4 輸入你的名字并按 確定 按鈕 則結(jié)束該過(guò)程 你輸入的名字到那里去了 如何找到用戶在輸入框中輸入的信息 在這種情況下 需要使用變量來(lái)存儲(chǔ)用戶輸入的結(jié)果 33 變量的數(shù)據(jù)類型 使用變量的第一步是了解變量的數(shù)據(jù)類型 變量的數(shù)據(jù)類型控制變量允許保存何種類型的數(shù)據(jù) 表列出了VBA支持的數(shù)據(jù)類型 還列出了各種類型的變量所需要的存儲(chǔ)空間和能夠存儲(chǔ)的數(shù)值范圍 34 變量的數(shù)據(jù)類型 35 用Dim語(yǔ)句創(chuàng)建變量 聲明變量 現(xiàn)在 你對(duì)變量可以使用的數(shù)據(jù)類型已經(jīng)比較熟悉了 以下我們將創(chuàng)建變量 創(chuàng)建變量可以使用Dim語(yǔ)句 創(chuàng)建變量通常成為 聲明變量 Dim語(yǔ)句的基本語(yǔ)法如下 Dim變量名AS數(shù)據(jù)類型 變量名必須以字母開(kāi)始 并且只能包含字母數(shù)字和特定的特殊字符 不能包含空格句號(hào)驚嘆號(hào) 也不能包含字符 名字最大長(zhǎng)度為255個(gè)字符 36 變量命名的慣例 下表給出了推薦的變量命名慣例數(shù)據(jù)類型短前綴長(zhǎng)前綴 37 使用數(shù)組 如果你使用過(guò)其他編程序語(yǔ)言 可能對(duì)數(shù)組已經(jīng)比較熟悉了 數(shù)組是具有相同數(shù)據(jù)類型并共同享有一個(gè)名字的一組變量的集合 數(shù)組中的元素通過(guò)索引數(shù)字加以區(qū)分 定義數(shù)組的方法如下 Dimarray name n Astype 其中n是數(shù)組元素的個(gè)數(shù) 例如 如果要?jiǎng)?chuàng)建保存10個(gè)學(xué)生名字的數(shù)組 可以用以下語(yǔ)句 Dims學(xué)生名字 9 AsInteger 38 使用數(shù)組 聲明數(shù)組時(shí)的另一種方法是不給定大小 可以在程序運(yùn)行時(shí)定義其大小 通過(guò)創(chuàng)建動(dòng)態(tài)數(shù)組就可以做到 例如 你的程序要?jiǎng)?chuàng)建一表格 可以提示用戶輸入表格的行和列的數(shù)目 聲明動(dòng)態(tài)數(shù)組的語(yǔ)法如下 Dimdyn array Astype 對(duì)數(shù)組聲明后可以在程序運(yùn)行時(shí)用ReDim語(yǔ)句指定數(shù)組的大小 ReDimdyn array array size 參數(shù)array size代表數(shù)組的新大小 如果要保留數(shù)組的數(shù)值 請(qǐng)?jiān)赗eDim語(yǔ)句后使用保留字Preserve 具體語(yǔ)法如下 ReDimPreservedyn array array size 39 變量賦值 聲明變量后就可以給變量賦值 請(qǐng)注意下列語(yǔ)句中為數(shù)組變量賦值時(shí)索引數(shù)字的使用 Dimi人數(shù)AsIntegerDimi考試成績(jī)AsIntegerDimiAsIntegeri人數(shù) inputbox 輸入學(xué)生的人數(shù) ReDimPreservei考試成績(jī) i數(shù)量 Fori 1toi人數(shù)i考試成績(jī) i inputbox 輸入考試成績(jī) i Next 40 使用常量 現(xiàn)在 你已經(jīng)知道變量是存儲(chǔ)非靜態(tài)信息的存儲(chǔ)容器 當(dāng)存儲(chǔ)靜態(tài)信息時(shí)可以創(chuàng)建常量 它可以供程序多次使用而且便于記憶 比如圓周率比3 1415926好理解得多 要聲明常量并設(shè)置常量的值 需要使用const語(yǔ)句 常量聲明后 不能對(duì)它賦一個(gè)新的值 例如 假設(shè)需要聲明一個(gè)常量來(lái)保存銷項(xiàng)稅率 可以使用以下語(yǔ)句 通常常量聲明時(shí)用全大寫(xiě)字母以區(qū)分變量 const銷項(xiàng)稅率AsLong 0 17 41 作用域 到現(xiàn)在為止 已經(jīng)學(xué)習(xí)了如何定義變量和常量 但是還不知道在何處定義 可以在兩個(gè)地方定義常量和變量 過(guò)程中定義和在模塊頂部一個(gè)名為 通用聲明 的區(qū)域內(nèi)定義 定義的位置決定租用域 在過(guò)程中聲明 該變量只能在該過(guò)程中使用 其他過(guò)程中不能使用這個(gè)變量和常量 這中變量成為局部變量或過(guò)程級(jí)變量 在模塊頂部聲明的變量稱為模塊級(jí)變量 該變量在該模塊的所有過(guò)程中都可以使用 42 作用域 還有一種等級(jí)的作用域稱為公共級(jí) 公共級(jí)變量可以在應(yīng)用程序的任何過(guò)程中使用 不論過(guò)程和變量是否定義在一個(gè)模塊 這就使得公共級(jí)變量在使用中十分靈活 但是公共級(jí)變量在程序運(yùn)行時(shí)一直保留在內(nèi)存中 這樣就占用了系統(tǒng)資源 要?jiǎng)?chuàng)建公共級(jí)變量 可以用Public語(yǔ)句 具體語(yǔ)法如下 PublicvariablenameAsdatatype 要?jiǎng)?chuàng)建公共級(jí)常量 具體語(yǔ)法如下 PublicconstCONSTANAMEdatatype value 公共級(jí)變量或常量必須在模塊頂部的 通用聲明 區(qū)域中定義 43 利用VBA設(shè)置工作表使用權(quán)限 ExcelHome一般保護(hù)工作表采取的方法是用EXCEL菜單中的 保護(hù) 命令 有時(shí)這尚嫌不足 比如一些機(jī)密文件根本要讓某些使用者無(wú)法看到 但又需要他來(lái)操作工作簿中的其他表 怎么辦 可以打開(kāi)VBA編輯器 打開(kāi) 工程資源管理器 雙擊該工作表 現(xiàn)在出現(xiàn)的是設(shè)置該表的屬性的編輯窗口 單擊窗口左上的下拉列表框 選擇worksheet 這時(shí)再?gòu)脑摯翱谟疑戏降牧斜砜蛑羞x擇Active 激活 這時(shí)自動(dòng)顯示如下的語(yǔ)句塊 PrivateSubWorksheet Activate EndSub 44 利用VBA設(shè)置工作表使用權(quán)限 在其中加入代碼 假設(shè)用 123 作為密碼 Sheet 機(jī)密文檔 為限制權(quán)限文檔 sheet 普通文檔 為工作簿中你認(rèn)為任何適合的工作表 IfApplication InputBox 請(qǐng)輸入操作權(quán)限密碼 123ThenRange A1 SelectElseMsgbox 密碼錯(cuò)誤 即將退出 Sheets 普通文檔 SelectEndif 45 利用VBA設(shè)置工作表使用權(quán)限 完整的程序如下 PrivateSubWorksheet Activate IfApplication InputBox 請(qǐng)輸入操作權(quán)限密碼 123ThenRange A1 SelectElseMsgBox 密碼錯(cuò)誤 即將退出 Sheets 普通文檔 SelectEndIfEndSub 46 利用VBA設(shè)置工作表使用權(quán)限 這樣做仍有一個(gè)問(wèn)題 就是越權(quán)使用者仍會(huì)看到一些文件的片段 即在提示密碼的那段時(shí)間 你可以這樣做 用上述方法選擇工作表的Deactivate事件 輸入以下代碼 Sheets 機(jī)密文檔 Cells Font ColorIndex 2 這段程序使得此工作表在不被激活時(shí) 所有文字為白色 然后 在第一個(gè)程序中的Range A1 Select后插入一行 寫(xiě)入以下代碼 ActiveSheet Cells Font ColorIndex 56 這段程序 在你輸入正確密碼后 將該表所有文字轉(zhuǎn)變?yōu)樯罨疑?47 利用VBA設(shè)置工作表使用權(quán)限 完整的程序如下 PrivateSubWorksheet Activate IfApplication InputBox 請(qǐng)輸入操作權(quán)限密碼 123ThenRange A1 SelectSheets 機(jī)密文檔 Cells Font ColorIndex 56ElseMsgBox 密碼錯(cuò)誤 即將退出 Sheets 普通文檔 SelectEndIf 48 提高VBA運(yùn)行效率 由于MicrosoftOffice辦公套件的廣泛應(yīng)用 以及該軟件版本的不斷提升 功能不斷完善 在Office辦公套件平臺(tái)上開(kāi)發(fā)出的VBA應(yīng)用程序越來(lái)越多 而VBA是一種宏語(yǔ)言 在運(yùn)行速度上有很大的限制 因此VBA編程的方法直接關(guān)系到VBA程序運(yùn)行的效率 本文列舉了一些提高VBA程序運(yùn)行效率的方法 方法1 盡量使用VBA原有的屬性 方法和Worksheet函數(shù) 由于Excel對(duì)象多達(dá)百多個(gè) 對(duì)象的屬性 方法 事件多不勝數(shù) 對(duì)于初學(xué)者來(lái)說(shuō)可能對(duì)它們不全部了解 這就產(chǎn)生了編程者經(jīng)常編寫(xiě)與Excel對(duì)象的屬性 方法相同功能的VBA代碼段 而這些代碼段的運(yùn)行效率顯然與Excel對(duì)象的屬性 方法完成任務(wù)的速度相差甚大 49 提高VBA運(yùn)行效率 ForEachcInWorksheet 1 Range A1 A1000 TotalValue TotalValue c ValueNextAverageValue TotalValue Worksheet 1 Range A1 A1000 Rows Count 如求平均工資的例子 例如用Range的屬性CurrentRegion來(lái)返回Range對(duì)象 該對(duì)象代表當(dāng)前區(qū) 當(dāng)前區(qū)指以任意空白行及空白列的組合為邊界的區(qū)域 同樣功能的VBA代碼需數(shù)十行 因此編程前應(yīng)盡可能多地了解Excel對(duì)象的屬性 方法 充分利用Worksheet函數(shù)是提高程序運(yùn)行速度的極度有效的方法 50 提高VBA運(yùn)行效率 而下面代碼程序比上面例子快得多 AverageValue Application WorksheetFunction Average Worksheets 1 Range A1 A1000 其它函數(shù)如Count Counta Countif Match Lookup等等 都能代替相同功能的VBA程序代碼 提高程序的運(yùn)行速度 尤其在循環(huán)中每一個(gè)Excel對(duì)象的屬性 方法的調(diào)用都需要通過(guò)OLE接口的一個(gè)或多個(gè)調(diào)用 這些OLE調(diào)用都是需要時(shí)間的 減少使用對(duì)象引用能加快VBA代碼的運(yùn)行 方法2 盡量減少使用對(duì)象引用 51 提高VBA運(yùn)行效率 例如1 使用With語(yǔ)句 Workbooks 1 Sheets 1 Range A1 A1000 Font Name Pay Workbooks 1 Sheets 1 Range A1 A1000 Font FontStyle Bold 則以下語(yǔ)句比上面的快 WithWorkbooks 1 Sheets 1 Range A1 A1000 Font Name Pay FontStyle Bold EndWith 52 提高VBA運(yùn)行效率 2 使用對(duì)象變量 如果你發(fā)現(xiàn)一個(gè)對(duì)象引用被多次使用 則你可以將此對(duì)象用Set設(shè)置為對(duì)象變量 以減少對(duì)對(duì)象的訪問(wèn) 如 Workbooks 1 Sheets 1 Range A1 Value 100Workbooks 1 Sheets 1 Range A2 Value 200 則以下代碼比上面的要快 SetMySheet Workbooks 1 Sheets 1 MySheet Range A1 Value 100MySheet Range A2 Value 200 53 提高VBA運(yùn)行效率 3 在循環(huán)中要盡量減少對(duì)象的訪問(wèn) Fork 1To1000Sheets Sheet1 SelectCells k 1 Value Cells 1 1 ValueNextk 則以下代碼比上面的要快 SetTheValue Cells 1 1 ValueSheets Sheet1 SelectFork 1To1000Cells k 1 Value TheValueNextk 54 提高VBA運(yùn)行效率 方法3 減少對(duì)象的激活和選擇 如果你的通過(guò)錄制宏來(lái)學(xué)習(xí)VBA的 則你的VBA程序里一定充滿了對(duì)象的激活和選擇 例如Workbooks XXX Activate Sheets XXX Select Range XXX Select等 但事實(shí)上大多數(shù)情況下這些操作不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024桂林學(xué)院輔導(dǎo)員招聘筆試真題
- 法律盡職調(diào)查(技術(shù)方向)考試試卷及答案
- 高端旅游體驗(yàn)師筆試試題及答案
- 2025年乙丙醇胺項(xiàng)目建議書(shū)
- 2025年湖南省生態(tài)環(huán)境廳下屬事業(yè)單位招聘考試筆試試題【答案】
- 項(xiàng)目合作管理制度
- 活動(dòng)總結(jié)范文大學(xué)活動(dòng)結(jié)束后的總結(jié)怎么寫(xiě)
- 項(xiàng)目大管理圖表
- 2025年無(wú)功功率自動(dòng)補(bǔ)償裝置項(xiàng)目建議書(shū)
- 2025城市規(guī)劃工作計(jì)劃
- 2025年廣東高考政治試卷真題答案詳解講評(píng)(課件)
- 卡口及道路交通智能監(jiān)控系統(tǒng)方案設(shè)計(jì)
- 2025年家庭照護(hù)師職業(yè)資格考試試題及答案
- 呼吸機(jī)相關(guān)性肺炎的預(yù)防和護(hù)理
- 2025年綏化市中考化學(xué)試題卷(含答案解析)
- 門(mén)診口腔院感基礎(chǔ)知識(shí)培訓(xùn)
- 論詠嘆調(diào)《媽媽不在》的形象刻畫(huà)與唱段處理
- 危重病人觀察和護(hù)理要點(diǎn)
- 砌體工程培訓(xùn)課件
- GB/T 45719-2025半導(dǎo)體器件金屬氧化物半導(dǎo)體(MOS)晶體管的熱載流子試驗(yàn)
- 2025-2030中國(guó)醫(yī)藥商業(yè)行業(yè)盈利態(tài)勢(shì)與投資潛力分析報(bào)告
評(píng)論
0/150
提交評(píng)論