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

下載本文檔

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

文檔簡介

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

2、XCEL等)自動(dòng)化 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. l 盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似.事實(shí)上,如果你已經(jīng)了解了VB,會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???lVBA究竟是什么?更確切地講,它是一種自動(dòng)化語言,它可以使常用的程序自動(dòng)化,可以創(chuàng)建自定義的解決方案. VBAVBA是什么是什么EXCELEXCEL環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn)環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn) l 也許你想知道VBA可

3、以干什么?使用VBA可以實(shí)現(xiàn)的功能包括: 使重復(fù)的任務(wù)自動(dòng)化使重復(fù)的任務(wù)自動(dòng)化自定自定義義EXCEL工具工具欄欄,菜菜單單和界面和界面簡簡化模板的使用化模板的使用自定自定義義EXCEL,使其使其成成為為開開發(fā)發(fā)平臺(tái)平臺(tái)創(chuàng)創(chuàng)建建報(bào)報(bào)表表對(duì)對(duì)數(shù)據(jù)數(shù)據(jù)進(jìn)進(jìn)行復(fù)行復(fù)雜雜的的操作和分析操作和分析EXCELEXCEL環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn)環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn)l 用用EXCELEXCEL作為開發(fā)平臺(tái)有如下原因作為開發(fā)平臺(tái)有如下原因: : EXCELEXCEL本身功能強(qiáng)大本身功能強(qiáng)大, ,包括打印包括打印, ,文件處理文件處理, ,格式化和文本編輯格式化和文本編輯 EXCELEXCEL內(nèi)置大

4、量函數(shù)內(nèi)置大量函數(shù) EXCELEXCEL界面熟悉界面熟悉 可連接到多種數(shù)據(jù)庫可連接到多種數(shù)據(jù)庫 錄制簡單的宏錄制簡單的宏 l 在介紹學(xué)習(xí)在介紹學(xué)習(xí)VBAVBA之前,應(yīng)該花幾分鐘錄制一個(gè)宏。之前,應(yīng)該花幾分鐘錄制一個(gè)宏。新新術(shù)語術(shù)語: :“ “宏宏” ”,指一系列,指一系列EXCEL能能夠執(zhí)夠執(zhí)行的行的VBA語語句。句。以下將要以下將要錄錄制的宏非常制的宏非常簡單簡單,只是改,只是改變單變單元格元格顏顏色。色。請(qǐng)請(qǐng)完成如下步完成如下步驟驟: :打開新工作簿,確認(rèn)其他工作簿已經(jīng)關(guān)閉。打開新工作簿,確認(rèn)其他工作簿已經(jīng)關(guān)閉。選擇選擇A1A1單元格。調(diào)出單元格。調(diào)出“常用常用”工具欄。工具欄。選擇選擇“

5、工具工具”“宏宏”“錄制新宏錄制新宏”。輸入輸入“改變顏色改變顏色”作為宏名替換默認(rèn)宏名,單擊確定。作為宏名替換默認(rèn)宏名,單擊確定。選擇選擇“格式格式”的的“單元格單元格”,選擇,選擇“圖案圖案”選項(xiàng)中的紅色選項(xiàng)中的紅色, ,單擊單擊“確定確定”。單擊單擊“停止錄制停止錄制”工具欄按鈕,結(jié)束宏錄制過程。工具欄按鈕,結(jié)束宏錄制過程。宏名最多可為宏名最多可為255個(gè)字符,并且必須以字母個(gè)字符,并且必須以字母開始。其中可用的字符開始。其中可用的字符包括:字母、數(shù)字和包括:字母、數(shù)字和下劃線。下劃線。執(zhí)行宏執(zhí)行宏 選擇選擇任何一個(gè)任何一個(gè)單單元格,比如元格,比如A3選擇選擇“ “工具工具” ”“宏宏”

6、 ”“宏宏” ”, ,顯顯示示“ “宏宏” ”對(duì)話對(duì)話框框選擇選擇“ “改改變顏?zhàn)冾伾?”, ,選擇選擇“ “執(zhí)執(zhí)行行” ”, ,則則A3單單元格的元格的顏顏色色變?yōu)樽優(yōu)榧t紅色色當(dāng)執(zhí)行一個(gè)宏時(shí),當(dāng)執(zhí)行一個(gè)宏時(shí),EXCELEXCEL按照宏語句執(zhí)行的情況就像按照宏語句執(zhí)行的情況就像VBAVBA代碼在對(duì)代碼在對(duì)EXCELEXCEL進(jìn)行進(jìn)行“遙控遙控”。但。但VBAVBA的的“遙控遙控”不僅能使操作變得簡便,還能使你獲得一些使用不僅能使操作變得簡便,還能使你獲得一些使用EXCELEXCEL標(biāo)準(zhǔn)命令所無法實(shí)現(xiàn)的功能。而且,一旦熟悉了標(biāo)準(zhǔn)命令所無法實(shí)現(xiàn)的功能。而且,一旦熟悉了EXCELEXCEL的的“

7、遙控遙控”,你都會(huì),你都會(huì)奇怪自己在沒有這些奇怪自己在沒有這些“遙控遙控”的情況下的情況下,到底是怎么熬過來的。要,到底是怎么熬過來的。要 執(zhí)行剛才執(zhí)行剛才錄制的宏,可以按以下步驟進(jìn)行:錄制的宏,可以按以下步驟進(jìn)行: 試著選擇其它單元格和幾個(gè)單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。查看錄制的代碼查看錄制的代碼 “改變顏色”是宏的名稱注意:有一小圓點(diǎn),它的作用在于簡化語句,小圓點(diǎn)代替出現(xiàn)在With后的詞,它是With結(jié)構(gòu)的一部分。 Sub改改變顏?zhàn)冾伾?)改改變顏?zhàn)冾伾玀acroxw記錄記錄的宏的宏2000-6-10WithSelection.Interior.ColorIndex=3

8、.Pattern=xlSolid.PatternColorIndex=xlAutomaticEndWithEndSub到底是什么在控制到底是什么在控制EXCELEXCEL的運(yùn)行呢的運(yùn)行呢? ?你可能有些疑惑你可能有些疑惑. .好好, ,讓我們看看讓我們看看VBAVBA的語句吧的語句吧. .編輯錄制的代碼編輯錄制的代碼 SubSub 改變顏色改變顏色() () 改變顏色改變顏色 Macro Macro xwxw 記錄的宏記錄的宏 2000-6-10 2000-6-10 WithWith Selection.InteriorSelection.Interior . .ColorIndexColor

9、Index = 3 = 3 End With End With End SubEnd Sub在上一節(jié),我們錄制了一個(gè)宏并查看了代碼,代碼中有兩句實(shí)際上在上一節(jié),我們錄制了一個(gè)宏并查看了代碼,代碼中有兩句實(shí)際上并不起作用。哪兩句?并不起作用。哪兩句?現(xiàn)在,在宏中作一個(gè)修改,刪除多余行,直到和下面代碼相同:現(xiàn)在,在宏中作一個(gè)修改,刪除多余行,直到和下面代碼相同:完成后,在工作表中試驗(yàn)一下。完成后,在工作表中試驗(yàn)一下。你會(huì)發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。你會(huì)發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。在在WithWith 語句前加入一行語句前加入一行: : Range(“A5”).Select Range(“A5”).

10、Select 試著運(yùn)行該宏試著運(yùn)行該宏, ,則無論開始選擇則無論開始選擇哪個(gè)單元格哪個(gè)單元格, ,宏運(yùn)行結(jié)果都是使宏運(yùn)行結(jié)果都是使A5A5單元格變紅單元格變紅. .錄制宏的局限性錄制宏的局限性 l 錄錄制的宏無判斷或循制的宏無判斷或循環(huán)環(huán)能力能力 人機(jī)交互能力差人機(jī)交互能力差,即用即用戶戶無法無法進(jìn)進(jìn)行行輸輸入入,計(jì)計(jì)算機(jī)無法算機(jī)無法給給出提示出提示 無法無法顯顯示示EXCEL對(duì)話對(duì)話框框 無法無法顯顯示自定示自定義義窗體窗體 希望自動(dòng)化的許多希望自動(dòng)化的許多EXCELEXCEL過程大多都可以用錄制宏來完成過程大多都可以用錄制宏來完成. .但是宏記錄器存在以下局限性但是宏記錄器存在以下局限性.

11、 .通過宏記錄器無法完成的工作有通過宏記錄器無法完成的工作有:為宏指定快捷鍵為宏指定快捷鍵 你也許希望為經(jīng)常使用的宏指定快捷鍵。當(dāng)給宏指定了快捷鍵后,你也許希望為經(jīng)常使用的宏指定快捷鍵。當(dāng)給宏指定了快捷鍵后,就可以用快捷鍵來執(zhí)行宏,而不必通過就可以用快捷鍵來執(zhí)行宏,而不必通過“工具工具”菜單。菜單。注意:當(dāng)包含宏的工作簿打開時(shí)間,為宏指定快捷鍵會(huì)覆蓋EXCEL默認(rèn)的快捷鍵。例如:把例如:把CTRL+CCTRL+C指定指定給某個(gè)宏,那么給某個(gè)宏,那么CTRL+CCTRL+C就不再執(zhí)行復(fù)制命令。就不再執(zhí)行復(fù)制命令。可以在創(chuàng)建宏時(shí)指定快捷鍵,也可以在創(chuàng)建后再指定。要在創(chuàng)建(錄制)宏時(shí)指定快捷鍵,只須

12、在錄制宏時(shí)在輸入宏名后,在“快捷鍵”文本框中輸入相應(yīng)的鍵。錄制宏后指定快捷鍵也很簡單,只需選擇“工具”-“宏”,顯示“宏”對(duì)話框,選擇要指定快捷鍵的宏,再單擊“選項(xiàng)”按鈕,通過“選項(xiàng)”對(duì)話框進(jìn)行設(shè)置。決定宏保存的位置決定宏保存的位置 l 宏可保存在三種可能的位置:宏可保存在三種可能的位置: l 1)當(dāng)前工作簿。(只有該工作簿打開時(shí),該宏才可用。) l 2)新工作簿。 l 3)個(gè)人宏工作簿。個(gè)人宏工作簿個(gè)人宏工作簿 個(gè)人宏工作簿,是為宏而設(shè)計(jì)的一種特殊的具有自動(dòng)隱藏特性的工作簿。個(gè)人宏工作簿,是為宏而設(shè)計(jì)的一種特殊的具有自動(dòng)隱藏特性的工作簿。第一次將宏創(chuàng)建到個(gè)人宏第一次將宏創(chuàng)建到個(gè)人宏工作簿時(shí),

13、會(huì)創(chuàng)建名為工作簿時(shí),會(huì)創(chuàng)建名為“PERSONAL.XLS”的的新文件。新文件。如果該文件存在,則每當(dāng)EXCEL啟動(dòng)時(shí)會(huì)自動(dòng)將此文件打開并隱藏在活動(dòng)工作簿后面如果你要讓某個(gè)宏在多個(gè)工作簿都能使用,那么就應(yīng)當(dāng)創(chuàng)建個(gè)人宏工作簿,并將宏保存于其中。個(gè)人宏工作簿保存在個(gè)人宏工作簿保存在“XLSTART”XLSTART”文件夾中。文件夾中。具體路徑為:具體路徑為:C:WINDOWSProfilesApplication DataC:WINDOWSProfilesApplication DataMicrosoftExcelXLSTARTMicrosoftExcelXLSTART。個(gè)人宏工作簿個(gè)人宏工作簿l

14、試著練習(xí)一下保存一個(gè)簡單試著練習(xí)一下保存一個(gè)簡單的宏到個(gè)人宏工作簿的宏到個(gè)人宏工作簿, ,該宏為文本加下劃線并改為該宏為文本加下劃線并改為斜體斜體, ,步驟如下步驟如下: : l1 1)建立一個(gè)名為建立一個(gè)名為“HOUR2”HOUR2”的工作簿,選擇的工作簿,選擇“工具工具”-“-“宏宏”-“-“錄制新宏錄制新宏”, ,顯示顯示“錄錄制新宏制新宏”對(duì)話框?qū)υ捒颉2 2)輸入)輸入“格式化文本格式化文本”作為宏名。作為宏名。l3 3)從)從“保存在保存在”下拉框中選擇下拉框中選擇“個(gè)人宏工作簿個(gè)人宏工作簿”。l4 4)單擊單擊“確定確定”按鈕按鈕. .現(xiàn)在進(jìn)入錄制模式現(xiàn)在進(jìn)入錄制模式 。l5

15、5)單擊單擊“斜體斜體”工具欄按鈕工具欄按鈕. .一段時(shí)間內(nèi)一段時(shí)間內(nèi), ,鼠標(biāo)出現(xiàn)沙漏鼠標(biāo)出現(xiàn)沙漏, ,特別是在第一次創(chuàng)建個(gè)人宏特別是在第一次創(chuàng)建個(gè)人宏工作簿時(shí)工作簿時(shí), ,因?yàn)橐驗(yàn)镋XCELEXCEL在創(chuàng)建該工作簿在創(chuàng)建該工作簿 。l6 6)單擊單擊“下劃線下劃線”按鈕按鈕 。l7 7)停止錄制停止錄制 。使用并編輯個(gè)人宏工作簿中的宏使用并編輯個(gè)人宏工作簿中的宏 l 剛才已經(jīng)保存了一個(gè)宏到個(gè)人宏工作簿,現(xiàn)在可以在任何工作簿中使用該宏.可按如下步驟操作:l現(xiàn)在A3單元格中,你的名字變?yōu)樾斌w字還帶有下劃線。l選擇“窗口”-“取消隱藏”,可以將PERSONAL.XLS顯示出來,通過VBA編輯器可

16、以在其中的模塊中找到“格式化文本”這個(gè)宏。在VBA編輯器中可以對(duì)該宏進(jìn)行直接編輯或者刪除。關(guān)閉所有EXCEL工作簿任意打開一個(gè)EXCEL文件(EXCEL自動(dòng)將個(gè)人宏工作簿同時(shí)打開并隱藏)在A3中輸入您的名字選擇“工具”-“宏”,顯示宏對(duì)話框,現(xiàn)在可以在宏列表中看到“格式化文本”這個(gè)宏。選擇“格式化文本”宏,并執(zhí)行將宏指定給按鈕將宏指定給按鈕 l“按鈕”是最常見的界面組成元素之一.通過使用“窗體”工具欄,可以為工作簿中的工作表添加按鈕。在創(chuàng)建完一個(gè)按鈕后,可以為它指定宏,然后你的用戶就可以通過單擊按鈕來執(zhí)行宏。在本練習(xí)中,將創(chuàng)建一個(gè)按鈕,并為它指定一個(gè)宏,然后用該按鈕來執(zhí)行宏。具體步驟如下:打開

17、打開“HOUR2”HOUR2”工作簿工作簿調(diào)出調(diào)出”窗體窗體“工具欄工具欄單擊單擊”窗體窗體“工具欄工具欄中的中的“按鈕按鈕”控件控件在希望放置按鈕的在希望放置按鈕的位置按下鼠標(biāo)左鍵,位置按下鼠標(biāo)左鍵,拖動(dòng)鼠標(biāo)畫出一個(gè)拖動(dòng)鼠標(biāo)畫出一個(gè)矩形矩形在在Excel自動(dòng)出現(xiàn)的自動(dòng)出現(xiàn)的“指指定宏定宏”對(duì)話框中,選擇對(duì)話框中,選擇“格式化格式化文本文本”,單擊,單擊“確定確定”試著在某個(gè)單試著在某個(gè)單元格中輸入文元格中輸入文本,單擊按鈕本,單擊按鈕運(yùn)行該宏運(yùn)行該宏將宏指定給圖片或其他對(duì)象將宏指定給圖片或其他對(duì)象l 要執(zhí)行宏有多種方法可以選擇,可以將宏指定給按鈕等控件,還可以指定給圖片、自定義工具欄、窗體甚

18、至可以將宏指定給某個(gè)“事件”,比如單擊工作表,雙擊工 作表,激活工作表,打開工作簿等等,“事件”是一個(gè)重要的概念,除此而外“方法”“對(duì)象”都是將來你會(huì)經(jīng)常接觸到的。l 指定宏到圖片十分簡單,只需單擊某個(gè)圖片,單擊快捷菜單中的“指定宏”進(jìn)行設(shè)置即可。l 如果不希望在工作表上添加控件或圖片執(zhí)行宏,還有一種方法可以選擇:將宏指定給“工具欄按鈕”,可按如下步驟進(jìn)行: 打開打開“HOUR2”HOUR2”工作簿,選擇工作簿,選擇“工具工具”-“-“定義定義”,顯示,顯示“自定義自定義工具欄工具欄”對(duì)話框?qū)υ捒?從從“ “類別類別” ”列表框中列表框中選擇選擇“ “宏宏” ”, ,從從“ “命令命令” ”列

19、表框中列表框中選擇選擇“ “自定自定義義按按鈕鈕” ”。 。將將“自定義按鈕自定義按鈕”拖動(dòng)拖動(dòng)到工具欄到工具欄 右鍵單擊該按鈕,選擇右鍵單擊該按鈕,選擇“指定宏指定宏”,顯示,顯示“指定指定宏宏”對(duì)話框?qū)υ捒?選擇選擇“格式化文格式化文本本”并確定并確定單擊單擊“關(guān)閉關(guān)閉”按鈕,按鈕,關(guān)閉關(guān)閉“自定義工具自定義工具欄欄”對(duì)話框?qū)υ捒蛟囍谀吃囍谀硞€(gè)單元格個(gè)單元格中輸入文中輸入文本,單擊本,單擊工具欄按工具欄按鈕運(yùn)行該鈕運(yùn)行該宏宏EXCELEXCEL開發(fā)過程簡介開發(fā)過程簡介 l 需要對(duì)以下問題有個(gè)大致的概念需要對(duì)以下問題有個(gè)大致的概念. . 誰使用誰使用這決定了程序的操作這決定了程序的操作難

20、度及界面感觀難度及界面感觀數(shù)據(jù)來源和保存在哪里數(shù)據(jù)來源和保存在哪里這決定了程序的結(jié)構(gòu)這決定了程序的結(jié)構(gòu)如何操作如何操作這將決定程序的這將決定程序的界面和細(xì)節(jié)界面和細(xì)節(jié)數(shù)據(jù)處理的結(jié)果數(shù)據(jù)處理的結(jié)果最終決定程序的價(jià)值最終決定程序的價(jià)值認(rèn)識(shí)不同的控件認(rèn)識(shí)不同的控件 標(biāo)簽標(biāo)簽用于表現(xiàn)靜態(tài)文本分組框分組框用于將其他控件進(jìn)行組合按鈕按鈕用于執(zhí)行宏命令復(fù)選框復(fù)選框是一個(gè)選擇控件,通過單擊可以選擇和取消選擇,可以多項(xiàng)選擇。選項(xiàng)按鈕選項(xiàng)按鈕通常幾個(gè)選項(xiàng)按鈕組合在一起使用,在一組中只能選擇一個(gè)選項(xiàng)按鈕。列表框列表框用于顯示多個(gè)選項(xiàng)并從中選擇。只能單選。組合框組合框用于顯示多個(gè)選項(xiàng)并從中選擇??梢赃x擇其中的項(xiàng)目或者

21、輸入一個(gè)其它值。滾動(dòng)條滾動(dòng)條不是你常見的來給很長的窗體添加滾動(dòng)能力的控件,而是一種選擇機(jī)制。例如調(diào)節(jié)過渡色的滾動(dòng)條控件。包括水平滾動(dòng)條和垂直滾動(dòng)條。微調(diào)控件微調(diào)控件也是一種數(shù)值選擇機(jī)制,通過單擊控件的箭頭來選擇數(shù)值。例如改變Windows日期或時(shí)間就會(huì)使用到微調(diào)控件。開始時(shí)請(qǐng)關(guān)閉所有工作簿,打開一個(gè)新工作簿并另存為“HOUR3”.在工具欄上單擊鼠標(biāo)右鍵,從快捷菜單中選擇“窗體”,顯示“窗體”工具欄.其中有16個(gè)控件,只有9個(gè)可放到工作表內(nèi)。向工作表添加控件向工作表添加控件 z 創(chuàng)建新工作簿并另存為“HOUR3”,顯示“窗體”工具欄。z 選擇“標(biāo)簽”控件。z 將鼠標(biāo)定位到E1,此時(shí)鼠標(biāo)變成小十字

22、。z 按下左鍵,拖動(dòng)大約四個(gè)單元格長度,放開鼠標(biāo)左鍵.如果希望控件大小易于控制,可在創(chuàng)建該控件時(shí)按下ALT拖動(dòng)。z 在標(biāo)簽1上單擊右鍵,選擇編輯文字,現(xiàn)在可以輸入文字.完成后,單擊任何單元格退出文字編輯。z 通過以上步驟可以添加其它控件到工作表中,不再贅述。用用EXCELEXCEL設(shè)計(jì)界面十分簡單設(shè)計(jì)界面十分簡單, ,要將控件添加到工作表上要將控件添加到工作表上, ,可以按以下步驟操作可以按以下步驟操作: : 設(shè)置控件的特性設(shè)置控件的特性 l 設(shè)置控件的特性設(shè)置控件的特性, ,可以按以下步驟操作可以按以下步驟操作: : z 選中先前創(chuàng)建的復(fù)選框控件,如果沒有馬上創(chuàng)建一個(gè). z 右擊該控件,選擇

23、控制選項(xiàng)卡. z 在單元格鏈接中輸入A1并確定. z 單擊任意單元格,退出設(shè)置. z 用鼠標(biāo)左鍵單擊復(fù)選框,A1出現(xiàn)TRUE,這意味著該控件被選中.再次單擊 該控件,A1出現(xiàn)FALSE. z 選擇剛才創(chuàng)建的滾動(dòng)條控件.并調(diào)出設(shè)置控件格式對(duì)話框. z 在單元格鏈接中輸入A3并確定. z 在滾動(dòng)條外任意單元格單擊鼠標(biāo)左鍵,使?jié)L動(dòng)條不被選擇. z 用鼠標(biāo)單擊滾動(dòng)條上的箭頭,則A1的數(shù)值增加1,繼續(xù)單擊則A1的數(shù)值繼 續(xù)增加. z 保存并關(guān)閉該工作簿. 給控件命名給控件命名 使用用戶窗體使用用戶窗體l 當(dāng)創(chuàng)建一個(gè)控件時(shí)EXCEL會(huì)自動(dòng)給它指定一個(gè)名字,但不便于理解和記憶,為控件取名的方法基本和給單元格

24、或區(qū)域取名的方法相同.選中某個(gè)控件,再在位于公式欄上的“名字”編輯框輸入控件名字.這樣就給控件更改了名字 。l 如果希望創(chuàng)建專業(yè)級(jí)的應(yīng)用程序,并且方便用戶輸入數(shù)據(jù),那么應(yīng)該使用用戶窗體.用戶窗體可以作為程序的對(duì)話框和窗口.向用戶窗體添加控件基本類似于向工作表添加控件,然而第一步要?jiǎng)?chuàng)建一個(gè)用戶窗體.這可以通過VBA編輯器實(shí)現(xiàn).具體按以下步驟操作: 1)打開HOUR3工作簿,選擇工具-宏-VBA編輯器,打開VBA編輯器. 2) 在VBA編輯器中選擇工具欄上的插入用戶窗體按鈕或者選擇插入菜單,從下拉菜單中選擇用戶窗體 現(xiàn)在,VBA編輯器中出現(xiàn)一個(gè)名為USERFORM1的窗體,控件工具箱同時(shí)出現(xiàn),在其

25、中有許多已經(jīng)熟悉的控件,另外還有一些新的控件. 這些新的控件是: 使用用戶窗體使用用戶窗體切換按鈕切換按鈕該控件如果被選中,那么會(huì)保持被按下的狀態(tài).如果再次單擊它就恢復(fù)為沒有按下的狀態(tài).EXCEL工具欄中有幾個(gè)這樣的按鈕,例如:全屏顯示,加粗,下劃線以及窗體工具欄中的切換網(wǎng)格等.選項(xiàng)卡條選項(xiàng)卡條( (TabStripTabStrip) )它是包含多個(gè)選項(xiàng)卡的控件.通常用來對(duì)相關(guān)的信息進(jìn)行組織或分類.例如:你也許希望用選項(xiàng)卡條來顯示各個(gè)地區(qū)的銷售信息,可以給每個(gè)地區(qū)設(shè)置一個(gè)選項(xiàng)卡.在默認(rèn)時(shí),選項(xiàng)卡包含兩頁,分別叫做TAB1和TAB2,可以添加更多的選項(xiàng)卡.多頁多頁外觀類似選項(xiàng)卡條,是包含一頁或多

26、頁的控件.選項(xiàng)卡條給人相似的外觀,而多頁控件的各頁包含各自不同的控件,有各自不同的布局.多頁的例子很多,例如:設(shè)置控件格式對(duì)話框和工具菜單中的選項(xiàng)對(duì)話框.以及格式“菜單中的單元格.對(duì)話框.使用用戶窗體使用用戶窗體圖像控件圖像控件它允它允許許向窗體上放置向窗體上放置圖圖片片.圖圖片格式片格式須為須為:*.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf.RefEdit這是工具箱中默認(rèn)情況下的最后一個(gè)控件。它外觀象文本框,這是工具箱中默認(rèn)情況下的最后一個(gè)控件。它外觀象文本框,通過這個(gè)控件可以將用戶窗體折疊起來,以便選擇單元格區(qū)域。通過這個(gè)控件可以將用戶窗體折疊起來,以便選擇單元格

27、區(qū)域。在對(duì)用戶窗體設(shè)計(jì)得滿意時(shí),可以對(duì)其進(jìn)行預(yù)覽,方法是在在對(duì)用戶窗體設(shè)計(jì)得滿意時(shí),可以對(duì)其進(jìn)行預(yù)覽,方法是在VBAVBA編輯器中編輯器中選擇該窗體,單擊選擇該窗體,單擊“運(yùn)行運(yùn)行”菜單中的三角符號(hào)菜單中的三角符號(hào)“運(yùn)行子過程運(yùn)行子過程/ /用戶窗體用戶窗體”,三角符號(hào)在三角符號(hào)在 VBAVBA工具欄上也可能看得到,旁邊是一個(gè)垂直的等于符號(hào),工具欄上也可能看得到,旁邊是一個(gè)垂直的等于符號(hào),最右邊是個(gè)小正方形符號(hào),它們類似于錄音機(jī)上的按鈕。運(yùn)行窗體的最右邊是個(gè)小正方形符號(hào),它們類似于錄音機(jī)上的按鈕。運(yùn)行窗體的另一個(gè)方法是按另一個(gè)方法是按F5F5鍵。鍵。小結(jié)小結(jié)代碼存在的位置代碼存在的位置 l V

28、BAVBA代碼必須存放在某個(gè)位置,這個(gè)地方就是模塊。代碼必須存放在某個(gè)位置,這個(gè)地方就是模塊。l 有兩種基本類型的模塊:標(biāo)準(zhǔn)模塊和類模塊。有兩種基本類型的模塊:標(biāo)準(zhǔn)模塊和類模塊。l 模塊中的每個(gè)過程或者是函數(shù)過程,或者是子程序概念模塊中的每個(gè)過程或者是函數(shù)過程,或者是子程序概念. . 新術(shù)語:新術(shù)語: l 你的大部分工作集中在標(biāo)準(zhǔn)模塊中(簡稱為模塊)當(dāng)錄制宏時(shí)如果不你的大部分工作集中在標(biāo)準(zhǔn)模塊中(簡稱為模塊)當(dāng)錄制宏時(shí)如果不存在模塊,存在模塊,EXCELEXCEL自動(dòng)創(chuàng)建一個(gè)。自動(dòng)創(chuàng)建一個(gè)。EXCELEXCEL和和VBAVBA不關(guān)心代碼存放在哪一不關(guān)心代碼存放在哪一個(gè)模塊中,只要代碼存在于打開

29、的工作簿中即個(gè)模塊中,只要代碼存在于打開的工作簿中即可??伞?模塊:它是作為一個(gè)單元保存在一起的模塊:它是作為一個(gè)單元保存在一起的VBAVBA定義和過程的集合。定義和過程的集合。類模塊:類模塊:VBAVBA允許你創(chuàng)建自己的對(duì)象,對(duì)象的定義包含在類模塊中。允許你創(chuàng)建自己的對(duì)象,對(duì)象的定義包含在類模塊中。 對(duì)模塊的概覽對(duì)模塊的概覽 SubcmdSmallFont_Click()WithSelection.Font.Name=Arial.FontStyle=Regular.Size=16EndWithEndsub過程被定義為過程被定義為VBAVBA代碼的一個(gè)單元,過程中包括一系列用于執(zhí)行代碼的一個(gè)單

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

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

32、過Msgbox語句,但是在本例中將使用它。要?jiǎng)?chuàng)建該過程,請(qǐng)按如下步驟進(jìn)行:打開一個(gè)新工作簿。選擇工具-宏-Visual Basic編輯器,打開VBA編輯器窗口。在VBA編輯器的左面,可以看到“工程資源管理器”窗口。在工程資源管理器窗口的“Thisworkbook上單擊鼠標(biāo)右鍵,選擇“插入”-“模塊”,這樣就將一個(gè)模塊添加到應(yīng)用程序中了。(如果你沒有看見“工程資源管理器”窗口,可以按 Ctrl+R)。選擇“插入”“過程”,顯示“添加過程”對(duì)話框。輸入“第一個(gè)工程”作為過程名字。在“類型”分組框中,確認(rèn)選擇了“子程序”。單擊“確定”按鈕。這樣一個(gè)新的過程就添加到模塊中了??梢栽谀K中看到以 Pub

33、lic Sub第一個(gè)過程()開始,以End Sub結(jié)束的語句結(jié)構(gòu)。6)在過程中插入光標(biāo),輸入以下語句并回車: Msgbox 這是我的第一個(gè)過程 在輸入在輸入MsgboxMsgbox后,會(huì)自動(dòng)彈出一個(gè)消息框告訴你有關(guān)這條命令的信息,后,會(huì)自動(dòng)彈出一個(gè)消息框告訴你有關(guān)這條命令的信息,稱之為自動(dòng)列表技術(shù)。輸入完成的過程如下所示:稱之為自動(dòng)列表技術(shù)。輸入完成的過程如下所示:Public Sub 第一個(gè)過程() Msgbox 這是我的第一個(gè)過程 End SubVBAVBA對(duì)子程序和函數(shù)對(duì)子程序和函數(shù)有有如下的命名規(guī)則:如下的命名規(guī)則: * * 名字中可以包含字母名字中可以包含字母數(shù)字和下劃線。數(shù)字和下劃

34、線。 * * 名字中不能包含空格名字中不能包含空格句號(hào)驚嘆號(hào),也不能包句號(hào)驚嘆號(hào),也不能包含字符含字符 & $ #. & $ #. * * 名字最多可以包含名字最多可以包含255255個(gè)字符。個(gè)字符。 運(yùn)運(yùn)行宏行宏 l 創(chuàng)建這個(gè)過程后,可以運(yùn)行一下。l 運(yùn)行一個(gè)過程有幾種方法:l 可以直接使用“運(yùn)行”菜單,“運(yùn)行子程序/用戶窗體”工具欄按鈕或按下F5鍵。l 要運(yùn)行一個(gè)過程,可以按照如下步驟:l 1)單擊“運(yùn)行子程序/用戶窗體”工具欄按鈕,過程執(zhí)行并顯示一個(gè)消息框。 2)單擊消息框之中的“確定”按鈕,關(guān)閉該消息框。 保存對(duì)模塊所做的改變保存對(duì)模塊所做的改變 要保存新過程要保存新過

35、程, ,需要保存過程所駐留的工作簿需要保存過程所駐留的工作簿. .可以用可以用VBAVBA編輯器保存工作簿編輯器保存工作簿. .具體步驟如下具體步驟如下:選擇選擇 文件文件-保存工作簿保存工作簿.因?yàn)楸竟ぷ鞑具€沒有保存過因?yàn)楸竟ぷ鞑具€沒有保存過, ,所以要給它命名所以要給它命名. .輸入輸入“HOUR4”“HOUR4”作為文件名并按回車鍵作為文件名并按回車鍵, ,則工作簿和模塊與則工作簿和模塊與過程都保存下來了過程都保存下來了. . 變量變量 l 變量是用于臨時(shí)保存數(shù)值的地方.l 每次應(yīng)用程序運(yùn)行時(shí),變量可能包含不同的數(shù)值,而在程序運(yùn)行時(shí),變量的數(shù)值可以改變.l 為了說明為什么需要變量,可以按

36、照如下步驟創(chuàng)建一個(gè)簡單的過程:l 1)創(chuàng)建一個(gè)名為你叫什么名字的過程. 2)在過程中輸入如下代碼: Inputbox 輸入你的名字: l 3)按下F5鍵運(yùn)行過程,這時(shí)會(huì)顯示一個(gè)輸入框,要求輸入你的名字. 4)輸入你的名字并按確定按鈕,則結(jié)束該過程. 你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來存儲(chǔ)用戶輸入的結(jié)果. 變量的數(shù)據(jù)類型變量的數(shù)據(jù)類型 使用變量的第一步是了解變量的數(shù)據(jù)類型.變量的數(shù)據(jù)類型控制變量允許保存何種類型的數(shù)據(jù).表列出了VBA支持的數(shù)據(jù)類型,還列出了各種類型的變量所需要的存儲(chǔ)空間和能夠存儲(chǔ)的數(shù)值范圍.數(shù)據(jù)類型數(shù)據(jù)類型存儲(chǔ)空間存儲(chǔ)空間數(shù)值范

37、圍數(shù)值范圍Byte1字節(jié)0 - 255Boolean2字節(jié)True或者FalseInteger2字節(jié)-32768 - 32767Long(長整型)4字節(jié)-2147483648 - 2147483647Single4字節(jié)負(fù)值范圍: -3.402823E38 -1.401298E-45正值范圍: 1.401298E-45 3.402823E38Object4字節(jié)任何引用對(duì)象String(長字符串)10字節(jié)+1字節(jié)/字符0 - 約20億變量的數(shù)據(jù)類型變量的數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型存儲(chǔ)空間存儲(chǔ)空間數(shù)值數(shù)值范圍范圍Double8字節(jié)負(fù)值范圍:-1.79769313486232E308 - 4940656

38、45841247E-324正值范圍:4.94065645841247E-324 1.79769313486232E308Decimal14字不包括小數(shù)時(shí): +/-79228162514264337593543950335包括小數(shù)時(shí): +/7.9228162514264337593543950335Currency8字節(jié)-922337203685477 922337203685477Date8字節(jié)1000年1月1日 - 9999年12月31日String(固定長度)字符串的長度1 約65400Varient(數(shù)字)16字節(jié)Double范圍內(nèi)的任何數(shù)值Varient(文本)22字節(jié)+1字節(jié)/字符數(shù)

39、據(jù)范圍和變長字符串相同用用DimDim語句創(chuàng)建變量語句創(chuàng)建變量( (聲明變量聲明變量) ) 現(xiàn)在,你對(duì)變量可以使用的數(shù)據(jù)類型已經(jīng)比較熟悉了,以下我們將創(chuàng)建變量.創(chuàng)建變量可以使用Dim語句,創(chuàng)建變量通常成為聲明變量。DimDim語句的基本語法如下語句的基本語法如下: :Dim變量名變量名AS數(shù)據(jù)類型數(shù)據(jù)類型變量名必須以字母開始變量名必須以字母開始, ,并且只能包含字母數(shù)字和特定的特殊字符并且只能包含字母數(shù)字和特定的特殊字符, ,不能包含空格句號(hào)驚嘆號(hào)不能包含空格句號(hào)驚嘆號(hào), ,也不能包含字符也不能包含字符 & $ & $ #. #.名字最大長度為名字最大長度為255255個(gè)字符個(gè)

40、字符。變量命名的慣例變量命名的慣例 下表給出了推薦的變量命名慣例 數(shù)據(jù)類型短前綴長前綴 數(shù)據(jù)類型數(shù)據(jù)類型短前綴短前綴長前綴長前綴ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/ datIntegeriintLongllngObjectoobjSinglesngStringsstrVariantvvar使用數(shù)組使用數(shù)組如果你使用過其他編程序語言如果你使用過其他編程序語言, ,可能對(duì)數(shù)組已經(jīng)比較熟悉了可能對(duì)數(shù)組已經(jīng)比較熟悉了. .數(shù)組是具有數(shù)組是具有相同數(shù)據(jù)類型并共同享有一個(gè)名字的一組變量的集合相同數(shù)據(jù)類型并共同享有

41、一個(gè)名字的一組變量的集合. .數(shù)組中的元素通過數(shù)組中的元素通過索引數(shù)字加以區(qū)分索引數(shù)字加以區(qū)分, ,定義數(shù)組的方法如下定義數(shù)組的方法如下: :Dim array_name(n) As type(其中n是數(shù)組元素的個(gè)數(shù))例如例如, ,如果要?jiǎng)?chuàng)建保存如果要?jiǎng)?chuàng)建保存1010個(gè)學(xué)生名字的數(shù)組個(gè)學(xué)生名字的數(shù)組, ,可以用以下語句可以用以下語句: :Dim s學(xué)生名字(9) As Integer 使用數(shù)組使用數(shù)組聲明數(shù)組時(shí)的另一種方法是不給定大小。可以在程序運(yùn)行時(shí)定義其大小。通過創(chuàng)建動(dòng)態(tài)數(shù)組就可以做到。例如,你的程序要?jiǎng)?chuàng)建一表格,可以提示用戶輸入表格的行和列的數(shù)目。聲明動(dòng)態(tài)數(shù)組的語法如下:Dim dyn_

42、array() As type對(duì)數(shù)組聲明后可以在程序運(yùn)行時(shí)用ReDim語句指定數(shù)組的大小: ReDim dyn_array()(array_size)參數(shù)array_size代表數(shù)組的新大小。如果要保留數(shù)組的數(shù)值,請(qǐng)?jiān)赗eDim語句后使用保留字Preserve,具體語法如下:ReDim Preserve dyn_array(array_size)變量賦值變量賦值 l 聲明變量后就可以給變量賦值。請(qǐng)注意下列語句中為數(shù)組變量賦值時(shí)索引數(shù)字的使用。Dim i人數(shù) As Integer Dim i考試成績 As Integer Dim i As Integer i人數(shù) = inputbox(輸入學(xué)生的

43、人數(shù):) ReDim Preserve i考試成績(i數(shù)量) For i = 1 to i人數(shù) i考試成績(i) = inputbox(輸入考試成績& i ) Next 使用常量使用常量 l 現(xiàn)在,你已經(jīng)知道變量是存儲(chǔ)非靜態(tài)信息的存儲(chǔ)容器.當(dāng)存儲(chǔ)靜態(tài)信息時(shí)可以創(chuàng)建常量.它可以供程序多次使用而且便于記憶.l 比如圓周率比3.1415926好理解得多. 要聲明常量并設(shè)置常量的值,需要使用const語句.常量聲明后,不能對(duì)它賦一個(gè)新的值.l 例如,假設(shè)需要聲明一個(gè)常量來保存銷項(xiàng)稅率,可以使用以下語句: l 通常常量聲明時(shí)用全大寫字母以區(qū)分變量. const 銷項(xiàng)稅率 As Long = 0.

44、17 作用域作用域 到現(xiàn)在為止,已經(jīng)學(xué)習(xí)了如何定義變量和常量,但是還不知道在何處定義.可以在兩個(gè)地 方定義常量和變量: 過程中定義和在模塊頂部一個(gè)名為“通用聲明”的區(qū)域內(nèi)定義.定義的位置決定租用域定義的位置決定租用域.在過程中聲明,該變量只能在該過程中使用,其他過程中不能使用這個(gè)變量和常量,這中變量成為局部變量或過程級(jí)變量;在模塊頂部聲明的變量稱為模塊級(jí)變量,該變量在該模塊的所有過程中都可以使用。作用域作用域還有一種等級(jí)的作用域稱為公共級(jí)。公共級(jí)變量可以在應(yīng)用程序的任何過程中使用,不論過程和變量是否定義在一個(gè)模塊。這就使得公共級(jí)變量在使用中十分靈活,但是公共級(jí)變量在程序運(yùn)行時(shí)一直保留在內(nèi)存中,

45、這樣就占用了系統(tǒng)資源。要?jiǎng)?chuàng)建公共級(jí)變量,可以用Public語句,具體語法如下:Public variablename As datatype要?jiǎng)?chuàng)建公共級(jí)常量,具體語法如下:Public const CONSTANAME datatype = value公共級(jí)變量或常量必須在模塊頂部的公共級(jí)變量或常量必須在模塊頂部的“通用聲明通用聲明”區(qū)域中定義。區(qū)域中定義。利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 Excel Home 一般保護(hù)工作表采取的方法是用EXCEL菜單中的“保護(hù)”命令,有時(shí)這尚嫌不足,比如一些機(jī)密文件根本要讓某些使用者無法看到,但又需要他來操作工作簿中的其他表,怎么辦?可以

46、打開VBA編輯器,打開“工程資源管理器”,雙擊該工作表,現(xiàn)在出現(xiàn)的是設(shè)置該表的屬性的編輯窗口,單擊窗口左上的下拉列表框,選擇 worksheet ,這時(shí)再從該窗口右上方的列表框中選擇Active(“激活”),這時(shí)自動(dòng)顯示如下的語句塊:Private Sub Worksheet_Activate() End Sub 利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限在其中加入代碼:在其中加入代碼:( (假設(shè)用假設(shè)用“123”“123”作為密碼作為密碼,Sheet“,Sheet“機(jī)密文檔機(jī)密文檔”為限制為限制權(quán)限文檔權(quán)限文檔,sheet,sheet普通文檔普通文檔 為工作簿中你認(rèn)為任何適合的工作表

47、為工作簿中你認(rèn)為任何適合的工作表) )If Application.InputBox(請(qǐng)輸入操作權(quán)限密碼:) = 123 Then Range(A1).Select Else Msgbox 密碼錯(cuò)誤,即將退出! Sheets(普通文檔).Select End if 利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限l 完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate() If Application. InputBox(請(qǐng)輸入操作權(quán)限密碼:) = 123 Then Range(A1).Select Else MsgBox 密碼錯(cuò)誤,即將退出! She

48、ets(普通文檔).Select End If End Sub利用利用VBA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限 這樣做仍有一個(gè)問題,就是越權(quán)使用者仍會(huì)看到一些文件的片段,即在提示這樣做仍有一個(gè)問題,就是越權(quán)使用者仍會(huì)看到一些文件的片段,即在提示密碼的那段時(shí)間。你可以這樣做,用上述方法選擇工作表的密碼的那段時(shí)間。你可以這樣做,用上述方法選擇工作表的DeactivateDeactivate事件事件, ,輸入以下代碼:輸入以下代碼:Sheets(機(jī)密文檔).Cells.Font.ColorIndex = 2 這段程序使得此工作表在不被激活時(shí),所有文字為白色。這段程序使得此工作表在不被激活時(shí),所有文

49、字為白色。然后,在第一個(gè)程序中的然后,在第一個(gè)程序中的Range(A1).SelectRange(A1).Select后插入一行,寫入以下代碼:后插入一行,寫入以下代碼:ActiveSheet.Cells.Font.ColorIndex = 56這段程序,在你輸入正確密碼后,將該表所有文字轉(zhuǎn)變?yōu)樯罨疑_@段程序,在你輸入正確密碼后,將該表所有文字轉(zhuǎn)變?yōu)樯罨疑@美肰BA設(shè)置工作表使用權(quán)限設(shè)置工作表使用權(quán)限完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate() If Application.InputBox(請(qǐng)輸入操作權(quán)限密碼:) = 123 The

50、n Range(A1).Select Sheets(機(jī)密文檔).Cells.Font.ColorIndex = 56 Else MsgBox 密碼錯(cuò)誤,即將退出! Sheets(普通文檔).Select End If提高提高VBAVBA運(yùn)行效率運(yùn)行效率由于Microsoft Office辦公套件的廣泛應(yīng)用,以及該軟件版本的不斷提升,功能不斷完善,在Office辦公套件平臺(tái)上開發(fā)出的VBA應(yīng)用程序越來越多,而VBA是一種宏語言,在運(yùn)行速度上有很大的限制。因此VBA編程的方法直接關(guān)系到VBA程序運(yùn)行的效率,本文列舉了一些提高VBA程序運(yùn)行效率的方法。方法方法1 1:盡量使用:盡量使用VBAVBA原

51、有的屬性、方法和原有的屬性、方法和WorksheetWorksheet函數(shù)函數(shù)由于Excel對(duì)象多達(dá)百多個(gè),對(duì)象的屬性、方法、事件多不勝數(shù),對(duì)于初學(xué)者來說可能對(duì)它們不全部了解,這就產(chǎn)生了編程者經(jīng)常編寫與Excel對(duì)象的屬性、方法相同功能的VBA代碼段,而這些代碼段的運(yùn)行效率顯然與Excel對(duì)象的屬性、方法完成任務(wù)的速度相差甚大。提高提高VBAVBA運(yùn)行效率運(yùn)行效率ForEachcInWorksheet(1).Range(A1:A1000)TotalValue=TotalValuec.ValueNextAverageValue=TotalValue/Worksheet(1).Range(A1:A

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

53、ange(A1:A1000)其它函數(shù)如Count, Counta, Countif, Match, Lookup等等,都能代替相同功能的VBA程序代碼,提高程序的運(yùn)行速度。 尤其在循環(huán)中每一個(gè)Excel對(duì)象的屬性、方法的調(diào)用都需要通過OLE接口的一個(gè)或多個(gè)調(diào)用,這些OLE調(diào)用都是需要時(shí)間的,減少使用對(duì)象引用能加快VBA代碼的運(yùn)行。方法方法2:盡量減少使用對(duì)象引用:盡量減少使用對(duì)象引用提高提高VBAVBA運(yùn)行效率運(yùn)行效率例如例如 1 1使用使用WithWith語句。語句。Workbooks(1).Sheets(1).Range(A1:A1000).Font.Name=PayWorkbooks(1

54、).Sheets(1).Range(A1:A1000).Font.FontStyle=Bold.則以下語句比上面的快則以下語句比上面的快WithWorkbooks(1).Sheets(1).Range(A1:A1000).Font.Name=Pay.FontStyle=Bold.EndWith提高提高VBAVBA運(yùn)行效率運(yùn)行效率2 2使用對(duì)象變量。使用對(duì)象變量。如果你發(fā)現(xiàn)一個(gè)對(duì)象引用被多次使用,則你可以將此對(duì)象用如果你發(fā)現(xiàn)一個(gè)對(duì)象引用被多次使用,則你可以將此對(duì)象用SetSet 設(shè)置為設(shè)置為對(duì)象變量,以減少對(duì)對(duì)象的訪問。如:對(duì)象變量,以減少對(duì)對(duì)象的訪問。如:Workbooks(1).Sheets

55、(1).Range(A1).Value = 100 Workbooks(1).Sheets(1).Range(A2).Value = 200則以下代碼比上面的要快:則以下代碼比上面的要快:Set MySheet = Workbooks(1).Sheets(1) MySheet.Range(A1).Value = 100 MySheet.Range(A2).Value = 200提高提高VBAVBA運(yùn)行效率運(yùn)行效率3 3在循環(huán)中要盡量減少對(duì)象的訪問。在循環(huán)中要盡量減少對(duì)象的訪問。For k = 1 To 1000 Sheets(Sheet1).Select Cells(k,1).Value = Cells(1,1).Value Next k則以下代碼比上面的要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論