VBA最最精典的教程基礎(chǔ)入門_第1頁
VBA最最精典的教程基礎(chǔ)入門_第2頁
VBA最最精典的教程基礎(chǔ)入門_第3頁
VBA最最精典的教程基礎(chǔ)入門_第4頁
VBA最最精典的教程基礎(chǔ)入門_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、VBA簡易教程簡易教程 ?直到90年代早期,使應(yīng)用程序自動化還是充滿挑戰(zhàn)性的領(lǐng)域 .對每個需要自動化的應(yīng)用程序,人們不得不學(xué)習(xí) 一種不同的自動化語言 . ?例如:可以用EXCEL的宏語言來使 EXCEL自動化,使用WORD BASIC 使WORD自動化,等等.微軟決定讓它開發(fā)出來的應(yīng)用程序共享一種通用的自動化語言-Visual Basic For Application(VBA), 可以認(rèn)為VBA是非常流行的應(yīng)用程序開發(fā)語言VASUAL BASIC 的子集.實(shí)際上VBA是“寄生于” VB應(yīng)用程序的版本 .VBA和VB的區(qū)別包括如下幾個方面 : 1. VB是設(shè)計用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序 ,而VBA

2、是使已有的應(yīng)用程序 (EXCEL等)自動化 2. VB具有自己的開發(fā)環(huán)境 ,而VBA必須寄生于已有的應(yīng)用程序 . 3. 要運(yùn)行VB開發(fā)的應(yīng)用程序 ,用戶不必安裝 VB,因?yàn)閂B開發(fā)出的應(yīng)用程序是可執(zhí)行文件(*.EXE),而VBA開發(fā)的程序必須依賴于它的“父”應(yīng)用程序,例如EXCEL. ? 盡管存在這些不同 ,VBA和VB在結(jié)構(gòu)上仍然十分相似 .事實(shí)上,如果你已經(jīng)了解了 VB,會發(fā)現(xiàn)學(xué)習(xí) VBA非常快. ? VBA究竟是什么 ?更確切地講 ,它是一種自動化語言 ,它可以使常用的程序自動化 ,可以創(chuàng)建自定義的解決方案 . VBA是什么是什么 EXCELEXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點(diǎn)環(huán)境中

3、基于應(yīng)用程序自動化的優(yōu)點(diǎn) ? 也許你想知道VBA可以干什么?使用VBA可以實(shí)現(xiàn)的功能包括: 使重復(fù)的任務(wù)自動化 自定義EXCEL工具欄, 菜單和界面 簡化模板的使用 自定義EXCEL,使其 成為開發(fā)平臺 創(chuàng)建報表 對數(shù)據(jù)進(jìn)行復(fù)雜的 操作和分析 EXCEL環(huán)境中基于應(yīng)用程序自動化的優(yōu)點(diǎn)環(huán)境中基于應(yīng)用程序自動化的優(yōu)點(diǎn) ? 用EXCEL作為開發(fā)平臺有如下原因: EXCEL本身功能強(qiáng)大,包括打印,文件處理,格式化和文本編輯 EXCEL內(nèi)置大量函數(shù) EXCEL界面熟悉 可連接到多種數(shù)據(jù)庫 錄制簡單的宏錄制簡單的宏 ? 在介紹學(xué)習(xí)VBA之前,應(yīng)該花幾分鐘錄制一個宏。 新術(shù)語:“宏”,指一系列EXCEL能夠

4、執(zhí)行的VBA語句。 以下將要 錄制的宏非常 簡單,只是改 變單元格顏色。請完成如下步 驟: 打開新工作簿,確認(rèn)其他工作簿已經(jīng)關(guān)閉。 選擇A1單元格。調(diào)出“常用”工具欄。 選擇“工具” “宏”“錄制新宏”。 輸入“改變顏色”作為宏名替換默認(rèn)宏名,單擊確定。 選擇“格式”的“單元格”,選擇“圖案”選項(xiàng)中的紅色,單擊“確定”。 單擊“停止錄制”工具欄按鈕,結(jié)束宏錄制過程。 宏名最多可為 255 個字符,并且必須以字母 開始。其中可用的字符 包括:字母、數(shù)字和 下劃線。 執(zhí)行宏執(zhí)行宏 選擇任何一個 單元格,比如A3 選擇“工具”“ 宏” “ 宏”,顯示“宏”對話框 選擇“改 變顏色”, 選擇“ 執(zhí)行”

5、,則A3單 元格的顏色變?yōu)?紅色 當(dāng)執(zhí)行一個宏時, EXCEL按照宏語句執(zhí)行的情況就像 VBA代碼在對 EXCEL進(jìn)行 “遙控”。但 VBA的“遙控”不僅能使操作變得簡便,還能使你獲得一些使用 EXCEL標(biāo)準(zhǔn)命令所無法實(shí)現(xiàn)的功能。而且,一旦熟悉了EXCEL的“遙控”,你都會 奇怪自己在沒有這些“遙控”的情況下,到底是怎么熬過來的。要 執(zhí)行剛才 錄制的宏,可以按以下步驟進(jìn)行: 試著選擇其它單元格和幾個單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。 查看錄制的代碼 “改變顏色”是 宏的名稱 注意:有一小圓點(diǎn),它的作用在于簡化語句,小圓點(diǎn)代替出現(xiàn)在With后的詞,它是With結(jié)構(gòu)的一部分。 Sub

6、改變顏色() 改變顏色 Macro xw 記錄的宏 2000-6-10 With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End With End Sub 到底是什么在控制EXCEL的運(yùn)行呢?你可能有些疑惑. 好,讓我們看看VBA的語句吧. 編輯錄制的代碼編輯錄制的代碼 Sub 改變顏色 () 改變顏色 Macro xw 記錄的宏 2000-6-10 With Selection.Interior .ColorIndex = 3 End With End Sub

7、 在上一節(jié),我們錄制了一個宏并查看了代碼,代碼中有兩句實(shí)際上 并不起作用。哪兩句? 現(xiàn)在,在宏中作一個修改,刪除多余行,直到和下面代碼相同: 完成后,在工作表中試驗(yàn)一下。 你會發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。 在With 語句前加入一行: Range(“A5”).Select 試著運(yùn)行該宏,則無論開始選擇 哪個單元格,宏運(yùn)行結(jié)果都是使 A5單元格變紅. 錄制宏的局限性錄制宏的局限性 ? 錄制的宏無判斷或循 環(huán)能力 人機(jī)交互能力差 ,即用戶無法 進(jìn)行輸入,計算機(jī)無法 給出提示 無法顯示EXCEL 對話框 無法顯示自定義窗體 希望自動化的許多EXCEL過程大多都可以用錄制宏來完成. 但是宏記錄器存在以

8、下局限性.通過宏記錄器無法完成的工作有: 為宏指定快捷鍵 你也許希望為經(jīng)常使用的宏指定快捷鍵。當(dāng)給宏指定了快捷鍵后, 就可以用快捷鍵來執(zhí)行宏,而不必通過“工具”菜單。 注意:當(dāng)包含宏的工作簿打開時間, 為宏指定快捷鍵會覆蓋 EXCEL默認(rèn)的快捷鍵。 例如:把 CTRL+C指定 給某個宏,那么 CTRL+C 就不再執(zhí)行復(fù)制命令。 可以在創(chuàng)建宏時指定快捷鍵,也可以在創(chuàng)建后再指定。 要在創(chuàng)建(錄制)宏時指定快捷鍵,只須在錄制宏時 在輸入宏名后,在“快捷鍵”文本框中輸入相應(yīng)的鍵。 錄制宏后指定快捷鍵也很簡單,只需選擇“工具”-“宏”,顯示“宏” 對話框,選擇要指定快捷鍵的宏,再單擊“選項(xiàng)”按鈕,通過“

9、選項(xiàng)” 對話框進(jìn)行設(shè)置。 決定宏保存的位置 ? 宏可保存在三種可能的位置:宏可保存在三種可能的位置: ? 1)當(dāng)前工作簿。(只有該工作簿打開時,該宏才可用。) ? 2)新工作簿。 ? 3)個人宏工作簿。 個人宏工作簿 個人宏工作簿,是為宏而設(shè)計的一種特殊的具有自動隱藏特性的工作簿。 第一次將宏創(chuàng)建到個人宏 工作簿時,會創(chuàng)建名為 “PERSONAL.XLS” 的 新文件。 如果該文件存在,則每當(dāng)EXCEL 啟動時會自動將此文件打開 并隱藏在活動工作簿后面 如果你要讓某個宏在多個工作簿 都能使用,那么就應(yīng)當(dāng)創(chuàng)建 個人宏工作簿, 并將宏保存于其中。 個人宏工作簿保存在“XLSTART”文件夾中。 具

10、體路徑為: C:WINDOWSProfilesApplication Data MicrosoftExcelXLSTART 。 個人宏工作簿個人宏工作簿 ? 試著練習(xí)一下保存一個簡單的宏到個人宏工作簿,該宏為文本加下劃線并改為斜體,步驟如下: ?1)建立一個名為“HOUR2”的工作簿,選擇“工具”-“宏”-“錄制新宏” ,顯示“錄制新宏”對話框。 ?2)輸入“格式化文本”作為宏名。 ?3)從“保存在”下拉框中選擇“個人宏工作簿”。 ?4)單擊“確定”按鈕 .現(xiàn)在進(jìn)入錄制模式 。 ?5)單擊“斜體”工具欄按鈕 .一段時間內(nèi) ,鼠標(biāo)出現(xiàn)沙漏 ,特別是在第一次創(chuàng)建個人宏工作簿時 ,因?yàn)镋XCEL在創(chuàng)

11、建該工作簿 。 ?6)單擊“下劃線”按鈕 。 ?7)停止錄制 。 使用并編輯個人宏工作簿中的宏使用并編輯個人宏工作簿中的宏 ? 剛才已經(jīng)保存了一個宏到個人宏工作簿,現(xiàn)在可以在任何工作簿中使用該宏.可按如下步驟操作: ?現(xiàn)在A3單元格中,你的名字變?yōu)樾斌w字還帶有下劃線。 ?選擇“窗口” -“取消隱藏”,可以將PERSONAL.XLS 顯示出來,通過VBA編輯器可以在其中的模塊中找到“格式化文本”這個宏。在 VBA編輯器中可以對該宏進(jìn)行直接編輯或者刪除。 關(guān)閉所有EXCEL工作簿 任意打開一個EXCEL文件 (EXCEL自動將個人宏工作簿同時打開并隱藏) 在A3中輸入您的名字 選擇“工具”-“宏”

12、,顯示宏對話框,現(xiàn)在 可以在宏列表中看到“格式化文本”這個宏。 選擇“格式化文本”宏,并執(zhí)行 將宏指定給按鈕將宏指定給按鈕 ?“按鈕”是最常見的界面組成元素之一 .通過使用“窗體”工具欄,可以為工作簿中的工作表添加按鈕。在創(chuàng)建完一個按鈕后,可以為它指定宏,然后你的用戶就可以通過單擊按鈕來執(zhí)行宏。在本練習(xí)中,將創(chuàng)建一個按鈕,并為它指定一個宏,然后用該按鈕來執(zhí)行宏。具體步驟如下: 打開“HOUR2”工作簿 調(diào)出”窗體“工具欄 單擊”窗體“工具欄 中的“按鈕”控件 在希望放置按鈕的 位置按下鼠標(biāo)左鍵, 拖動鼠標(biāo)畫出一個 矩形 在Excel 自動出現(xiàn)的“指 定宏”對話框中,選擇“格式化 文本”,單擊“

13、確定” 試著在某個單 元格中輸入文 本,單擊按鈕 運(yùn)行該宏 將宏指定給圖片或其他對象將宏指定給圖片或其他對象 ? 要執(zhí)行宏有多種方法可以選擇,可以將宏指定給按鈕等控件,還可以指定給圖片、自定義工具欄、窗體甚至可以將宏指定給某個“事件”,比如單擊工作表,雙擊工 作表,激活工作表,打開工作簿等等,“事件”是一個重要的概念,除此而外“方法”“對象”都是將來你會經(jīng)常接觸到的。 ? 指定宏到圖片十分簡單,只需單擊某個圖片,單擊快捷菜單中的“指定宏”進(jìn)行設(shè)置即可。 ? 如果不希望在工作表上添加控件或圖片執(zhí)行宏,還有一種方法可以選擇:將宏指定給“工具欄按鈕”,可按如下步驟進(jìn)行: 打開“HOUR2”工作簿,選

14、擇 “工具” -“定義”,顯示“自定義 工具欄”對話框 從“ 類別”列表框中 選擇“宏”, 從“命令”列表框中選擇 “自定 義按鈕”。 將“自定義按鈕”拖動 到工具欄 右鍵單擊該按鈕,選擇右鍵單擊該按鈕,選擇 “指定宏”,顯示“指定 宏”對話框 選擇“格式化文 本”并確定 單擊“關(guān)閉”按鈕, 關(guān)閉“自定義工具 欄”對話框 試著在某 個單元格 中輸入文 本,單擊 工具欄按 鈕運(yùn)行該 宏 EXCELEXCEL開發(fā)過程簡介開發(fā)過程簡介 ? 需要對以下問題有個大致的概念. 誰使用 這決定了程序的操作 難度及界面感觀 數(shù)據(jù)來源和保存在哪里 這決定了程序的結(jié)構(gòu) 如何操作 這將決定程序的 界面和細(xì)節(jié) 數(shù)據(jù)處

15、理的結(jié)果 最終決定程序的價值 認(rèn)識不同的控件認(rèn)識不同的控件 標(biāo)簽 用于表現(xiàn)靜態(tài)文本 分組框 用于將其他控件進(jìn)行組合 按鈕 用于執(zhí)行宏命令 復(fù)選框 是一個選擇控件,通過單擊可以選擇和取消選擇,可以多項(xiàng)選擇。 選項(xiàng)按鈕 通常幾個選項(xiàng)按鈕組合在一起使用,在一組中只能選擇一個選項(xiàng)按鈕。 列表框 用于顯示多個選項(xiàng)并從中選擇。只能單選。 組合框 用于顯示多個選項(xiàng)并從中選擇??梢赃x擇其中的項(xiàng)目或者輸入一個其它值。 滾動條 不是你常見的來給很長的窗體添加滾動能力的控件,而是一種選擇機(jī)制。例如調(diào)節(jié)過渡色的滾動條控件。包括水平滾動條和垂直滾動條。 微調(diào)控件 也是一種數(shù)值選擇機(jī)制,通過單擊控件的箭頭來選擇數(shù)值。例如

16、改變Windows日期或時間就會使用到微調(diào)控件。 開始時請關(guān)閉所有工作簿 ,打開一個新工作簿并另存為“HOUR3”. 在工具欄上單擊鼠標(biāo)右鍵 ,從快捷菜單中選擇“窗體” ,顯示“窗體”工具欄 . 其中有16個控件,只有 9個可放到工作表內(nèi)。 向工作表添加控件向工作表添加控件 ? 創(chuàng)建新工作簿并另存為“HOUR3”, 顯示“窗體”工具欄。 ? 選擇“標(biāo)簽”控件。 ? 將鼠標(biāo)定位到E1,此時鼠標(biāo)變成小十字。 ? 按下左鍵,拖動大約四個單元格長度,放開鼠標(biāo)左鍵.如果希望控件大小易于控制,可在創(chuàng)建該控件時按下ALT拖動。 ? 在標(biāo)簽1上單擊右鍵,選擇 編輯文字, 現(xiàn)在可以輸入文字.完成后,單擊任何單元

17、格退出文字編輯。 ? 通過以上步驟可以添加其它控件到工作表中,不再贅述。 用EXCEL設(shè)計界面十分簡單,要將控件添加到工作表上, 可以按以下步驟操作: : 設(shè)置控件的特性 ? 設(shè)置控件的特性,可以按以下步驟操作: ? 選中先前創(chuàng)建的復(fù)選框控件 ,如果沒有馬上創(chuàng)建一個 . ? 右擊該控件 ,選擇 控制 選項(xiàng)卡. ? 在 單元格鏈接 中輸入A1并確定. ? 單擊任意單元格 ,退出設(shè)置. ? 用鼠標(biāo)左鍵單擊復(fù)選框 ,A1出現(xiàn)TRUE,這意味著該控件被選中 .再次單擊 該控件,A1出現(xiàn)FALSE. ? 選擇剛才創(chuàng)建的滾動條控件 .并調(diào)出 設(shè)置控件格式 對話框. ? 在 單元格鏈接 中輸入A3并確定.

18、? 在滾動條外任意單元格單擊鼠標(biāo)左鍵 ,使?jié)L動條不被選擇 . ? 用鼠標(biāo)單擊滾動條上的箭頭 ,則A1的數(shù)值增加 1,繼續(xù)單擊則 A1的數(shù)值繼 續(xù)增加. ? 保存并關(guān)閉該工作簿 . 給控件命名? ?使用用戶窗體 ? 當(dāng)創(chuàng)建一個控件時EXCEL會自動給它指定一個名字,但不便于理解和記憶,為控件取名的方法基本和給單元格或區(qū)域取名的方法相同.選中某個控件,再在位于公式欄上的“名字”編輯框輸入控件名字.這樣就給控件更改了名字 。 ? 如果希望創(chuàng)建專業(yè)級的應(yīng)用程序,并且方便用戶輸入數(shù)據(jù),那么應(yīng)該使用用戶窗體.用戶窗體可以作為程序的對話框和窗口.向用戶窗體添加控件基本類似于向工作表添加控件,然而第一步要創(chuàng)建

19、一個用戶窗體.這可以通過VBA編輯器實(shí)現(xiàn).具體按以下步驟操作: ? 1)打開?問?工作簿,選擇 工具?宏-VBA編輯器, 打開VBA編輯器. ? 2) 在VBA編輯器中選擇工具欄上的 插入用戶窗體 按鈕或者選擇 插入菜單,從下拉菜單中選擇 用戶窗體 現(xiàn)在,VBA編輯器中出現(xiàn)一個名為啜?剏?的窗體尬控件工具箱 同時出現(xiàn),在其中有許多已經(jīng)熟悉的控件,另外還有一些新的控件. 這些新的控件是: 使用用戶窗體使用用戶窗體 切換按鈕 該控件如果被選中 ,那么會保持被按下的狀態(tài) .如果再次單擊它就恢復(fù)為沒有 按下的狀態(tài) .EXCEL工具欄中有幾個這樣的按鈕 , 例如尺全屏顯示?加粗?下劃線 以及 窗體 工具

20、欄中的 切換網(wǎng)格 等. 選項(xiàng)卡條(TabStrip) 它是包含多個選項(xiàng)卡的控件 .通常用來對相關(guān)的信息進(jìn)行組織或分類 . 例如:你也許希望用選項(xiàng)卡條來顯示各個地區(qū)的銷售信息,可以給每個地區(qū)設(shè)置 一個選項(xiàng)卡 .在默認(rèn)時,選項(xiàng)卡包含兩頁 ,分別叫做TAB1和TAB2,可以添加更多 的選項(xiàng)卡. 多頁 外觀類似選項(xiàng)卡條 ,是包含一頁或多頁的控件 .選項(xiàng)卡條給人相似的外觀 , 而多頁控件的各頁包含各自不同的控件 ,有各自不同的布局 .多頁的例子很多 , 例如尺設(shè)置控件格式 對話框和 工具 菜單中的 選項(xiàng) 對話框. 以及 格式“菜單中的單元格?尮 對話框. 使用用戶窗體 圖像控件 它允許向窗體上放置 圖片

21、.圖片格式須為: *.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf. RefEdit 這是工具箱中默認(rèn)情況下的最后一個控件。它外觀象文本框, 通過這個控件可以將用戶窗體折疊起來,以便選擇單元格區(qū)域。 在對用戶窗體設(shè)計得滿意時,可以對其進(jìn)行預(yù)覽,方法是在VBA編輯器中 選擇該窗體,單擊“運(yùn)行”菜單中的三角符號“運(yùn)行子過程/用戶窗體”, 三角符號在 VBA工具欄上也可能看得到,旁邊是一個垂直的等于符號, 最右邊是個小正方形符號,它們類似于錄音機(jī)上的按鈕。運(yùn)行窗體的 另一個方法是按 F5鍵。 小結(jié) 代碼存在的位置 ? VBA代碼必須存放在某個位置,這個地方就是模塊。 ? 有兩種

22、基本類型的模塊:標(biāo)準(zhǔn)模塊和類模塊。 ? 模塊中的每個過程或者是函數(shù)過程,或者是子程序概念. 新術(shù)語: ? 你的大部分工作集中在標(biāo)準(zhǔn)模塊中(簡稱為模塊)當(dāng)錄制宏時如果不存在模塊,EXCEL自動創(chuàng)建一個。EXCEL和VBA不關(guān)心代碼存放在哪一個模塊中,只要代碼存在于打開的工作簿中即可。 模塊:它是作為一個單元保存在一起的VBA定義和過程的集合。 類模塊:VBA允許你創(chuàng)建自己的對象,對象的定義包含在類模塊中。 對模塊的概覽 Sub cmdSmallFont_Click() With Selection.Font .Name=Arial .FontStyle=Regular .Size=16 End

23、With End sub 過程被定義為VBA代碼的一個單元,過程中包括一系列用于執(zhí)行 某個任務(wù)或是進(jìn)行某種計算的語句。某個任務(wù)或是進(jìn)行某種計算的語句。 上面列出的過程實(shí)際上是一個 事件過程。這個過程的名字是 由一個按鈕對象的名字 CmdSmallFont 和一個事件的 名字Click組成的,兩者之間 用下劃線分開。 當(dāng)單擊這個命令按鈕時, 就會運(yùn)行這個事件過程。 函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這個數(shù)值通常是計算的 結(jié)果或是測試的結(jié)果,例如False 或True.正如前面所說,可以用VBA創(chuàng)建 自定義函數(shù)。實(shí)際上可以在工作表上使用你創(chuàng)建的函數(shù)。 程序清單4-2是一個計算價格的10%

24、為運(yùn)費(fèi)的簡單例子。 簡單的用戶定義函數(shù)示例。 Public Function Shipping(Price) Shipping = Price * 0.1 End Function 這個函數(shù)使用一個參數(shù) (Price).子程序和函數(shù) 都可以使用參數(shù)。Price 可以是數(shù)字和單元格引用。 創(chuàng)建過程創(chuàng)建過程 創(chuàng)建第一個過程需要兩個基本步驟。 首先,需要向工作簿中添加一個模塊。接著需要向模塊中添加一個工程。 對于創(chuàng)建的每一個應(yīng)用程序,只需添加一次模塊??梢允褂枚鄠€模塊,但這是不必要的。某些開發(fā)者喜歡使用多個模塊,以便根據(jù)他們的目的或者窗體對過程進(jìn)行組織。在本練習(xí)中,創(chuàng)建的過程只顯示一個消息框。 在本

25、練習(xí)中創(chuàng)建的過程只顯示一個消息框。在本練習(xí)中使用Msgbox是為了提供一個可見的例子,雖然我們還沒有介紹過 Msgbox語句,但是在本例中將使用它。要創(chuàng)建該過程,請按如下步驟進(jìn)行: 打開一個新工作簿。 選擇 工具?宏-Visual Basic編輯器 ,打開VBA編輯器窗口。 在VBA編輯器的左面,可以看到“工程資源管理器”窗口。 在工程資源管理器窗口的“桔獩潷歲潢歯 上單擊鼠標(biāo)右鍵, 選擇“插入”-“ 模塊”,這樣就將一個模塊添加到應(yīng)用程序中了。 (如果你沒有看見“工程資源管理器”窗口,可以按 Ctrl+R)。 選擇“插入”“過程”,顯示“添加過程”對話框。 輸入“第一個工程”作為過程名字。

26、在“類型”分組框中,確認(rèn)選擇了“子程序”。單擊“確定”按鈕。 這樣一個新的過程就添加到模塊中了??梢栽谀K中看到以 Public Sub 第一個過程()開始,以End Sub結(jié)束的語句結(jié)構(gòu)。 6)在過程中插入光標(biāo),輸入以下語句并回車: 獍執(zhí)硯尠這是我的第一個過程 在輸入MsgboxMsgbox后,會自動彈出一個消息框告訴你有關(guān)這條命令的信息, 稱之為自動列表技術(shù)。輸入完成的過程如下所示: Public Sub 第一個過程() 獍執(zhí)硯尠這是我的第一個過程 End Sub VBA對子程序和函數(shù)有如下的命名規(guī)則: * 名字中可以包含字母數(shù)字和下劃線。 * 名字中不能包含空格句號驚嘆號,也不能包含字符

27、 & $ #. * 名字最多可以包含255個字符。 運(yùn)行宏運(yùn)行宏 ? 創(chuàng)建這個過程后,可以運(yùn)行一下。 ? 運(yùn)行一個過程有幾種方法: ? 可以直接使用“運(yùn)行”菜單,“運(yùn)行子程序/用戶窗體”工具欄按鈕或按下F5鍵。 ? 要運(yùn)行一個過程,可以按照如下步驟: ? 1)單擊“運(yùn)行子程序/用戶窗體”工具欄按鈕,過程執(zhí)行并顯示一個消息框。 2)單擊消息框之中的“確定”按鈕,關(guān)閉該消息框。 保存對模塊所做的改變 要保存新過程,需要保存過程所駐留的工作簿.可以用 VBA編輯器保存工作簿.具體步驟如下: 選擇 文件?保存工作簿. 因?yàn)楸竟ぷ鞑具€沒有保存過, 所以要給它命名. 輸入“HOUR4”作為文件名并

28、按回車鍵,則工作簿和模塊與 過程都保存下來了. 變量變量 ? 變量是用于臨時保存數(shù)值的地方. ? 每次應(yīng)用程序運(yùn)行時,變量可能包含不同的數(shù)值,而在程序運(yùn)行時,變量的數(shù)值可以改變. ? 為了說明為什么需要變量,可以按照如下步驟創(chuàng)建一個簡單的過程: ? 1)創(chuàng)建一個名為 你叫什么名字 的過程. 2)在過程中輸入如下代碼: ?灮瑵潢?輸入你的名字: ? 3)按下F5鍵運(yùn)行過程,這時會顯示一個輸入框,要求輸入你的名字. 4)輸入你的名字并按 確定 按鈕,則結(jié)束該過程. 你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來存儲用戶輸入的結(jié)果. 變量的數(shù)據(jù)類型變量的數(shù)據(jù)類

29、型 使用變量的第一步是了解變量的數(shù)據(jù)類型.變量的數(shù)據(jù)類型控制變量允許保存 何種類型的數(shù)據(jù) .表列出了 VBA支持的數(shù)據(jù)類型 ,還列出了各種類型的變量所需要 的存儲空間和能夠存儲的數(shù)值范圍 . 數(shù)據(jù)類型 存儲空間 數(shù)值范圍 Byte 1字節(jié) 0 - 255 Boolean 2字節(jié) True或者False Integer 2字節(jié) -32768 - 32767 Long(長整型) 4字節(jié) -2147483648 - 2147483647 Single 4字節(jié) 負(fù)值范圍: -3.402823E38 -1.401298E-45 正值范圍: 1.401298E-45 3.402823E38 Object

30、4字節(jié) 任何引用對象 String(長字符串) 10字節(jié)+1字節(jié)/字符 0 - 約20億 變量的數(shù)據(jù)類型變量的數(shù)據(jù)類型 數(shù)據(jù)類型 存儲空間 數(shù)值范圍 Double 8字節(jié) 負(fù)值范圍: -1.79769313486232E308 - 494065645841247E-324 正值范圍: 4.94065645841247E-324 1.79769313486232E308 Decimal 14字 不包括小數(shù)時: +/-79228162514264337593543950335 包括小數(shù)時: +/7.9228162514264337593543950335 Currency 8字節(jié) -9223372

31、03685477 922337203685477 Date 8字節(jié) 1000年1月1日 - 9999年12月31日 String(固定長度) 字符串的長度 1 約65400 Varient(數(shù)字) 16字節(jié) Double范圍內(nèi)的任何數(shù)值 Varient(文本) 22字節(jié)+1字節(jié)/字符 數(shù)據(jù)范圍和變長字符串相同 用用Dim語句創(chuàng)建變量語句創(chuàng)建變量 (聲明變量聲明變量) 現(xiàn)在,你對變量可以使用的數(shù)據(jù)類型已經(jīng)比較熟悉了,以下我們將創(chuàng)建變量 . 創(chuàng)建變量可以使用 Dim語句,創(chuàng)建變量通常成為聲明變量 。 Dim語句的基本語法如下: Dim 變量名 AS 數(shù)據(jù)類型 變量名必須以字母開始,并且只能包含字母

32、數(shù)字和特定的特殊字符, 不能包含空格句號驚嘆號,也不能包含字符 & $ #. 名字最大長度為255個字符。 變量命名的慣例變量命名的慣例 下表給出了推薦的變量命名慣例 數(shù)據(jù)類型短前綴長前綴 數(shù)據(jù)類型 短前綴 長前綴 Array a ary Boolean f bin Byte b bit Currency c cur Double d dbl Date/Time dt dtm/ dat Integer i int Long l lng Object o obj Single sng String s str Variant v var 使用數(shù)組 如果你使用過其他編程序語言,可能對數(shù)組已

33、經(jīng)比較熟悉了.數(shù)組是具有 相同數(shù)據(jù)類型并共同享有一個名字的一組變量的集合.數(shù)組中的元素通過 索引數(shù)字加以區(qū)分,定義數(shù)組的方法如下: Dim array_name(n) As type (其中n是數(shù)組元素的個數(shù)) 例如,如果要創(chuàng)建保存10個學(xué)生名字的數(shù)組,可以用以下語句: Dim s學(xué)生名字(9) As Integer 使用數(shù)組使用數(shù)組 聲明數(shù)組時的另一種方法是不給定大小??梢栽诔绦蜻\(yùn)行時定義其大小。通過創(chuàng)建動態(tài)數(shù)組就可以做到。例如,你的程序要創(chuàng)建一表格,可以提示用戶輸入表格的行和列的數(shù)目。 聲明動態(tài)數(shù)組的語法如下: Dim dyn_array() As type 對數(shù)組聲明后可以在程序運(yùn)行時用

34、ReDim語句指定數(shù)組的大?。?ReDim dyn_array()(array_size) 參數(shù)array_size 代表數(shù)組的新大小。如果要保留數(shù)組的數(shù)值,請?jiān)?ReDim語句后使用保留字 Preserve,具體語法如下: ReDim Preserve dyn_array(array_size) 變量賦值變量賦值 ? 聲明變量后就可以給變量賦值。請注意下列語句中為數(shù)組變量賦值時索引數(shù)字的使用。 Dim i人數(shù) As Integer Dim i考試成績 As Integer Dim i As Integer i人數(shù)?槧灮瑵潢? 輸入學(xué)生的人數(shù):) ReDim Preserve i考試成績(i數(shù)

35、量) For i = 1 to i人數(shù) i考試成績椨?湩異扴硯尨 輸入考試成績& i ) Next 使用常量使用常量 ? 現(xiàn)在,你已經(jīng)知道變量是存儲非靜態(tài)信息的存儲容器.當(dāng)存儲靜態(tài)信息時可以創(chuàng)建常量.它可以供程序多次使用而且便于記憶. ? 比如圓周率比3.1415926好理解得多. 要聲明常量并設(shè)置常量的值,需要使用const語句.常量聲明后,不能對它賦一個新的值. ? 例如,假設(shè)需要聲明一個常量來保存銷項(xiàng)稅率,可以使用以下語句: ? 通常常量聲明時用全大寫字母以區(qū)分變量. const 銷項(xiàng)稅率 As Long = 0.17 作用域 到現(xiàn)在為止 ,已經(jīng)學(xué)習(xí)了如何定義變量和常量 ,但是還

36、不知道在何處定義 .可以在兩個地 方定義常量和變量 : 過程中定義和在模塊頂部一個名為“通用聲明”的區(qū)域內(nèi)定義. 定義的位置決定租用域. 在過程中聲明 ,該變量只能在該過程中使用 ,其他過程中不能使用這個 變量和常量 ,這中變量成為局部變量或過程級變量; 在模塊頂部聲明的變量稱為模塊級變量,該變量在該模塊的所有過程中 都可以使用。 作用域作用域 還有一種等級的作用域稱為公共級。 公共級變量可以在應(yīng)用程序的任何過程中使用,不論過程和變量是否定義在一個模塊。 這就使得公共級變量在使用中十分靈活,但是公共級變量在程序運(yùn)行時一直保留在 內(nèi)存中,這樣就占用了系統(tǒng)資源。要創(chuàng)建公共級變量,可以用Public

37、語句, 具體語法如下: Public variablename As datatype 要創(chuàng)建公共級常量,具體語法如下: Public const CONSTANAME datatype = value 公共級變量或常量必須在模塊頂部的“通用聲明”區(qū)域中定義。 利用VBA設(shè)置工作表使用權(quán)限 Excel Home 一般保護(hù)工作表采取的方法是用 EXCEL菜單中的“保護(hù)”命令, 有時這尚嫌不足,比如一些機(jī)密文件根本要讓某些使用者無法看到, 但又需要他來操作工作簿中的其他表,怎么辦? 可以打開VBA編輯器,打開“工程資源管理器”,雙擊該工作表,現(xiàn)在出現(xiàn)的是 設(shè)置該表的屬性的編輯窗口,單擊窗口左上的下

38、拉列表框,選擇 worksheet , 這時再從該窗口右上方的列表框中選擇Active(“激活”),這時自動顯示 如下的語句塊: Private Sub Worksheet_Activate() End Sub 利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 在其中加入代碼:(假設(shè)用“123”作為密碼,Sheet“機(jī)密文檔”為限制 權(quán)限文檔猬敨瑥 普通文檔 為工作簿中你認(rèn)為任何適合的工作表) 晉?灰楬慣楴湯?灮瑵潂?請輸入操作權(quán)限密碼:) = 123 Then Range(A1).Select Else 獍執(zhí)硯尠密碼錯誤,即將退出! 桓敥獴尨普通文檔).Select End if 利用利用

39、VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 ? 完整的程序如下:完整的程序如下: Private Sub Worksheet_Activate() 晉?灰楬慣楴湯?湉異?硯尨請輸入操作權(quán)限密碼:) = 123 Then Range(A1).Select Else 獍?硯尠 密碼錯誤,即將退出! 桓敥獴尨普通文檔).Select End If End Sub 利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 這樣做仍有一個問題,就是越權(quán)使用者仍會看到一些文件的片段,即在提示密碼的那段時間。你可以這樣做,用上述方法選擇工作表的Deactivate事件,輸入以下代碼: 桓敥獴尨 機(jī)密文檔).Cel

40、ls.Font.ColorIndex = 2 這段程序使得此工作表在不被激活時,所有文字為白色。 然后,在第一個程序中的Range(A1).Select后插入一行,寫入以下代碼: ActiveSheet.Cells.Font.ColorIndex = 56 這段程序,在你輸入正確密碼后,將該表所有文字轉(zhuǎn)變?yōu)樯罨疑?利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 完整的程序如下:完整的程序如下: Private Sub Worksheet_Activate() 晉?灰楬慣楴湯?灮瑵潂?請輸入操作權(quán)限密碼:) = 123 Then Range(A1).Select 桓敥獴尨機(jī)密文檔).Cel

41、ls.Font.ColorIndex = 56 Else 獍?硯尠 密碼錯誤,即將退出! 桓敥獴尨普通文檔).Select End If 提高提高VBAVBA運(yùn)行效率運(yùn)行效率 由于Microsoft Office 辦公套件的廣泛應(yīng)用,以及該軟件版本的不斷提升,功能 不斷完善,在 Office辦公套件平臺上開發(fā)出的 VBA應(yīng)用程序越來越多, 而VBA是一種宏語言,在運(yùn)行速度上有很大的限制。 因此VBA編程的方法直接關(guān)系到 VBA程序運(yùn)行的效率,本文列舉了一些提高 VBA程序 運(yùn)行效率的方法。 方法1:盡量使用VBA原有的屬性、方法和Worksheet函數(shù) 由于Excel對象多達(dá)百多個,對象的屬性

42、、方法、事件多不勝數(shù),對于初學(xué)者來說 可能對它們不全部了解,這就產(chǎn)生了編程者經(jīng)常編寫與Excel對象的屬性、方法相同 功能的VBA代碼段,而這些代碼段的運(yùn)行效率顯然與 Excel對象的屬性、方法完成 任務(wù)的速度相差甚大。 提高提高VBA運(yùn)行效率運(yùn)行效率 For Each c In Worksheet(1).Range(A1:A1000 ) TotalValue = TotalValue c.Value Next AverageValue = TotalValue / Worksheet(1).Range (A1:A1000 ).Rows.Count 如求平均工資的例子:如求平均工資的例子: 例

43、如用Range的屬性 CurrentRegion 來返回Range 對象,該對象代表當(dāng)前區(qū)。 (當(dāng)前區(qū)指以任意空白行及空白列的組合為邊界的區(qū)域)。同樣功能的VBA 代碼需數(shù)十行。因此編程前應(yīng)盡可能多地了解Excel對 象的屬性、方法。 充分利用Worksheet函數(shù)是提高程序運(yùn)行速度的極度有效的方法。 提高VBA運(yùn)行效率 而下面代碼程序比上面例子快得多: AverageValue=Application.WorksheetFunction.Average(Worksheets(1) .Range(A1:A1000) 其它函數(shù)如Count, Counta, Countif, Match, Loo

44、kup等等, 都能代替相同功能的VBA程序代碼,提高程序的運(yùn)行速度。 尤其在循環(huán)中每一個Excel對象的屬性、方法的調(diào)用都需要通過OLE 接口的一個或多個調(diào)用,這些OLE調(diào)用都是需要時間的,減少使用 對象引用能加快VBA代碼的運(yùn)行。 方法2:盡量減少使用對象引用 提高提高VBA運(yùn)行效率運(yùn)行效率 例如 1 1使用With語句。 Workbooks(1).Sheets(1).Range(A1:A1000 ).Font.Name= Pay Workbooks(1).Sheets(1).Range(A1:A1000 ).Font.FontStyle=Bold . 則以下語句比上面的快 With Wor

45、kbooks(1).Sheets(1).Range(A1:A1000 ).Font .Name = Pay .FontStyle = Bold . End With 提高VBA運(yùn)行效率 2使用對象變量。 如果你發(fā)現(xiàn)一個對象引用被多次使用,則你可以將此對象用Set 設(shè)置為 對象變量,以減少對對象的訪問。如: Workbooks(1).Sheets(1).Range(A1).Value = 100 Workbooks(1).Sheets(1).Range(A2).Value = 200 則以下代碼比上面的要快: Set MySheet = Workbooks(1).Sheets(1) MyShee

46、t.Range(A1).Value = 100 MySheet.Range(A2).Value = 200 提高VBA運(yùn)行效率 3在循環(huán)中要盡量減少對象的訪問。 For k = 1 To 1000 Sheets(Sheet1).Select Cells(k,1).Value = Cells(1,1).Value Next k 則以下代碼比上面的要快: Set TheValue = Cells(1,1).Value Sheets(Sheet1).Select For k = 1 To 1000 Cells(k,1).Value = TheValue Next k 提高VBAVBA運(yùn)行效率 方法3:減少對象的激活和選擇 如果你的通過錄制宏來學(xué)習(xí) VBA的,則你的 VBA程序里一定充滿

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論