Excel宏的用法詳解_第1頁(yè)
Excel宏的用法詳解_第2頁(yè)
Excel宏的用法詳解_第3頁(yè)
Excel宏的用法詳解_第4頁(yè)
Excel宏的用法詳解_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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)介

1、 宏的用法詳解1.1 VBA是什么 直到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)化,使用word BASIC使word自動(dòng)化,等等.微軟決定讓它開發(fā)出來(lái)的應(yīng)用程序共享一種通用的自動(dòng)化語(yǔ)言-Visual Basic For Application(VBA),可以認(rèn)為VBA是非常流行的應(yīng)用程序開發(fā)語(yǔ)言VASUAL BASIC 的子集.實(shí)際上VBA是"寄生于"VB應(yīng)用程序的版本.VBA和VB的區(qū)別包括如下幾個(gè)方面: 1. VB是設(shè)計(jì)用于創(chuàng)建標(biāo)準(zhǔn)的應(yīng)用程序,而

2、VBA是使已有的應(yīng)用程序(excel等)自動(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. 盡管存在這些不同,VBA和VB在結(jié)構(gòu)上仍然十分相似.事實(shí)上,如果你已經(jīng)了解了VB,會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非???相應(yīng)的,學(xué)完VBA會(huì)給學(xué)習(xí)VB打下堅(jiān)實(shí)的基礎(chǔ).而且,當(dāng)學(xué)會(huì)在excel中用VBA創(chuàng)建解決方案后,即已具備在word access OUTLOOK FOXPRO PROWERPOINT 中用VB

3、A創(chuàng)建解決方案的大部分知識(shí). * VBA一個(gè)關(guān)鍵特征是你所學(xué)的知識(shí)在微軟的一些產(chǎn)品中可以相互轉(zhuǎn)化. * VBA可以稱作excel的“遙控器”. VBA究竟是什么?更確切地講,它是一種自動(dòng)化語(yǔ)言,它可以使常用的程序自動(dòng)化,可以創(chuàng)建自定義的解決方案. 此外,如果你愿意,還可以將excel用做開發(fā)平臺(tái)實(shí)現(xiàn)應(yīng)用程序. 1.2 excel環(huán)境中基于應(yīng)用程序自動(dòng)化的優(yōu)點(diǎn) 也許你想知道VBA可以干什么?使用VBA可以實(shí)現(xiàn)的功能包括: 1. 使重復(fù)的任務(wù)自動(dòng)化. 2. 自定義excel工具欄,菜單和界面. 3. 簡(jiǎn)化模板的使用. 4. 自定義excel,使其成為開發(fā)平臺(tái). 5. 創(chuàng)建報(bào)表. 6. 對(duì)數(shù)據(jù)進(jìn)行復(fù)

4、雜的操作和分析. 用excel作為開發(fā)平臺(tái)有如下原因: 1. excel本身功能強(qiáng)大,包括打印,文件處理,格式化和文本編輯. 2. excel內(nèi)置大量函數(shù). 3. excel界面熟悉. 4. 可連接到多種數(shù)據(jù)庫(kù). 用其他語(yǔ)言開發(fā)應(yīng)用程序,一半的工作是編寫一些基本功能的模塊,包括文件的打開和保存,打印,復(fù)制等.而用excel作為開發(fā)平臺(tái),則由于excel已經(jīng)具備這些基本功能,你要做的只是使用它. 1.3 錄制簡(jiǎn)單的宏 在介紹學(xué)習(xí)VBA之前,應(yīng)該花幾分鐘錄制一個(gè)宏。 新術(shù)語(yǔ):“宏”,指一系列excel能夠執(zhí)行的VBA語(yǔ)句。 以下將要錄制的宏非常簡(jiǎn)單,只是改變單元格顏色。請(qǐng)完成如下步驟: 1)打開新

5、工作簿,確認(rèn)其他工作簿已經(jīng)關(guān)閉。 2)選擇A1單元格。調(diào)出“常用”工具欄。 3)選擇“工具”“宏”“錄制新宏”。 4)輸入“改變顏色”作為宏名替換默認(rèn)宏名,單擊確定,注意,此時(shí)狀態(tài)欄中顯示“錄制”,特別是“停止錄制”工具欄也顯示出來(lái)。替換默認(rèn)宏名主要是便于分別這些宏。 宏名最多可為255個(gè)字符,并且必須以字母開始。其中可用的字符包括:字母、數(shù)字和下劃線。宏名中不允許出現(xiàn)空格。通常用下劃線代表空格。 5)選擇“格式”的“單元格”,選擇“圖案”選項(xiàng)中的紅色,單擊“確定”。 6)單擊“停止錄制”工具欄按鈕,結(jié)束宏錄制過(guò)程。 如果“停止錄制”工具欄開始并未出現(xiàn),請(qǐng)選擇“工具”“宏”“停止錄制”。 錄制

6、完一個(gè)宏后就可以執(zhí)行它了。 1.4 執(zhí)行宏 當(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)行: 1)選擇任何一個(gè)單元格,比如A3。 2)選擇“工具”“宏”“宏”,顯示“宏”對(duì)話框。 3)選擇“改變顏色”,選擇“執(zhí)行”,則A3單元格的顏色變?yōu)榧t色。試著選擇其它單元格和幾個(gè)單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。 1.5

7、查看錄制的代碼 到底是什么在控制excel的運(yùn)行呢?你可能有些疑惑.好,讓我們看看VBA的語(yǔ)句吧. 1)選擇“工具”“宏”“宏”,顯示“宏”對(duì)話框。 2)單擊列表中的“改變顏色”,選擇“編輯”按鈕。 此時(shí),會(huì)打開VBA的編輯器窗口(VBE)。關(guān)于該編輯器,以后再詳細(xì)說(shuō)明,先將注意力集中到顯示的代碼上。代碼如下:(日期和姓名會(huì)有不同) Sub 改變顏色() 改變顏色 Macro xw 記錄的宏 2000-6-10 With Selection.Interior .ColorIndex = 3 .Pattern = xlSolid .PatternColorIndex = xlAutomatic

8、End With End Sub 將來(lái)會(huì)十分熟悉這種代碼,雖然現(xiàn)在它們看上去像一種奇怪的外語(yǔ)。學(xué)習(xí)VBA或編程語(yǔ)言在某種程度上比較像在學(xué)習(xí)一種外語(yǔ)。 Sub 改變顏色():這是宏的名稱。 中間的以“ ”開頭的五行稱為“注釋”,它在錄制宏時(shí)自動(dòng)產(chǎn)生。 以With 開頭到End With 結(jié)束的結(jié)構(gòu)是With結(jié)構(gòu)語(yǔ)句,這段語(yǔ)句是宏的主要部分。注意單詞“selection”,它代表“突出顯示的區(qū)域”(即:選定區(qū)域)。With Selection.Interior :它讀作“選擇區(qū)域的的內(nèi)部”.這整段語(yǔ)句設(shè)置該區(qū)域內(nèi)部的一些“屬性”。 其中: .ColorIndex = 3: 將該內(nèi)部設(shè)為紅色。注意:

9、有一小圓點(diǎn),它的作用在于簡(jiǎn)化語(yǔ)句,小圓點(diǎn)代替出現(xiàn)在With后的詞,它是With結(jié)構(gòu)的一部分。另外:紅色被數(shù)字化為3.(紅色警戒是否可稱作:3號(hào)警戒,嗯?)有興趣的話,你將3改為其他數(shù)字試試看。 .Pattern = xlSolid:設(shè)置該區(qū)域的內(nèi)部圖案。由于是錄制宏,所以,雖然你并未設(shè)置這一項(xiàng),宏仍然將其記錄下來(lái)(因?yàn)樵凇皥D案”選項(xiàng)中有此一項(xiàng),只是你為曾設(shè)置而已)。xlSolid表示純色。 .PatternColorIndex = xlAutomatic:表示內(nèi)部圖案底紋顏色為自動(dòng)配色。 End With:結(jié)束With 語(yǔ)句。 End Sub:整個(gè)宏的結(jié)束語(yǔ) 1.6 編輯錄制的代碼 在上一節(jié),

10、我們錄制了一個(gè)宏并查看了代碼,代碼中有兩句實(shí)際上并不起作用。哪兩句?現(xiàn)在,在宏中作一個(gè)修改,刪除多余行,直到和下面代碼相同: Sub 改變顏色() 改變顏色 Macro xw 記錄的宏 2000-6-10 With Selection.Interior .ColorIndex = 3 End With End Sub 完成后,在工作表中試驗(yàn)一下。你會(huì)發(fā)現(xiàn)結(jié)果和修改前的狀況一樣。在With 語(yǔ)句前加入一行: Range("A5").Select 試著運(yùn)行該宏,則無(wú)論開始選擇哪個(gè)單元格,宏運(yùn)行結(jié)果都是使A5單元格變紅. 現(xiàn)在可以看到,編輯錄制的宏同樣非常簡(jiǎn)單。需要編輯宏是因?yàn)橐?/p>

11、下三個(gè)方面的原因。一:在錄制中出錯(cuò)而不得不修改。二:錄制的宏中有多余的語(yǔ)句需要?jiǎng)h除,提高宏的運(yùn)行速度。三:希望增加宏的功能。比如:加入判斷或循環(huán)等無(wú)法錄制的語(yǔ)句。 1.7 錄制宏的局限性 1)錄制的宏無(wú)判斷或循環(huán)能力. 2)人機(jī)交互能力差,即用戶無(wú)法進(jìn)行輸入,計(jì)算機(jī)無(wú)法給出提示. 3)無(wú)法顯示excel對(duì)話框. 4)無(wú)法顯示自定義窗體. 1.8 小結(jié) 思考: 1)VBA只能用于excel嗎? 2)VBA是基于哪種語(yǔ)言? 3)說(shuō)說(shuō)excel和VBA的關(guān)系. 4)為什么要用宏? 原文發(fā)表時(shí)間:未知<dvnews_page=(2):處理錄制的宏2.1 為宏指定快捷鍵 你也許希望為經(jīng)常使用的宏指

12、定快捷鍵。快捷鍵是指鍵的組合,當(dāng)其按下時(shí)執(zhí)行一條命令。例如:CTRL+C 在許多程序中代表“復(fù)制”命令。當(dāng)給宏指定了快捷鍵后,就可以用快捷鍵來(lái)執(zhí)行宏,而不必通過(guò)“工具”菜單。 注意:當(dāng)包含宏的工作簿打開時(shí)間,為宏指定快捷鍵會(huì)覆蓋excel默認(rèn)的快捷鍵。例如:把CTRL+C指定給某個(gè)宏,那么CTRL+C就不再執(zhí)行復(fù)制命令。用以下方法可以打印出excel的快捷鍵清單(用A4紙打印共有24頁(yè)之多): 1)打開excel幫助文件并選擇“目錄”選項(xiàng)。 2)從“使用快捷鍵”文件夾中選擇“”快捷鍵“標(biāo)題。 3)右擊該標(biāo)題,從快捷菜單中選擇“打印”。 4)選擇“打印所選標(biāo)題和所有子主題”,單擊“確定”。 可以

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

14、如果該文件存在,則每當(dāng)excel啟動(dòng)時(shí)會(huì)自動(dòng)將此文件打開并隱藏在活動(dòng)工作簿后面(在“窗口”菜單中選擇“取消隱藏”后,可以很方便地發(fā)現(xiàn)它的存在。)如果你要讓某個(gè)宏在多個(gè)工作簿都能使用,那么就應(yīng)當(dāng)創(chuàng)建個(gè)人宏工作簿,并將宏保存于其中。個(gè)人宏工作簿保存在“XLSTART”文件夾中。具體路徑為:C:WINDOWSProfilesApplication DataMicrosoftexcelXLSTART??梢砸詥卧~“XLSTART”查詢。 注意:如果存在個(gè)人宏工作簿,則每當(dāng)excel啟動(dòng)時(shí)會(huì)自動(dòng)將此文件打開并隱藏。因?yàn)樗娣旁赬LSTART文件夾內(nèi)。 保存宏到個(gè)人宏工作簿 本練習(xí),將保存一個(gè)簡(jiǎn)單的宏到個(gè)人

15、宏工作簿,該宏為文本加下劃線并改為斜體,步驟如下: 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)單擊"下

16、劃線"按鈕. 7)停止錄制. 使用并編輯個(gè)人宏工作簿中的宏 剛才已經(jīng)保存了一個(gè)宏到個(gè)人宏工作簿,現(xiàn)在可以在任何工作簿中使用該宏.可按如下步驟操作: 1)關(guān)閉所有excel工作簿. 2)任意打開一個(gè)excel文件.(excel自動(dòng)將個(gè)人宏工作簿同時(shí)打開并隱藏.) 3)在A3中輸入你的名字. 4)選擇"工具"-"宏",顯示宏對(duì)話框.現(xiàn)在可以在宏列表中看到"格式化文本"這個(gè)宏. 2.4 將宏指定給按鈕 即使通過(guò)快捷鍵可以是宏的執(zhí)行變快,但是一旦宏的數(shù)量多了也難于記憶,而且,如果宏是由其他人來(lái)使用,難道你要他們也記住那么多的快捷鍵嗎

17、? 作為excel開發(fā)者,一個(gè)主要的目標(biāo)是為自動(dòng)化提供一個(gè)易于操作的界面."按鈕"是最常見的界面組成元素之一.通過(guò)使用“窗體”工具欄,可以為工作簿中的工作表添加按鈕。在創(chuàng)建完一個(gè)按鈕后,可以為它指定宏,然后你的用戶就可以通過(guò)單擊按鈕來(lái)執(zhí)行宏。在本練習(xí)中,將創(chuàng)建一個(gè)按鈕,并為它指定一個(gè)宏,然后用該按鈕來(lái)執(zhí)行宏。具體步驟如下: 1)打開“HOUR2”工作簿。 2)調(diào)出”窗體“工具欄。 3)單擊”窗體“工具欄中的“按鈕”控件,此時(shí)鼠標(biāo)變成十字形狀。 4)在希望放置按鈕的位置按下鼠標(biāo)左鍵,拖動(dòng)鼠標(biāo)畫出一個(gè)矩形,這個(gè)矩形代表了該按鈕的大小。對(duì)大小滿意后放開鼠標(biāo)左鍵,這樣一個(gè)命令按鈕就

18、添加到了工作表中,同時(shí)excel自動(dòng)顯示“指定宏”對(duì)話框。 5)從“指定宏”對(duì)話框中選擇“格式化文本”,單擊“確定”。這樣,就把該宏指定給命令按鈕。 6)在按鈕的標(biāo)題“按鈕1”前單擊鼠標(biāo)左鍵,按下DELETE直到刪除所有文本,輸入“格式化”作為標(biāo)題。 7)單擊按鈕外的任意位置,現(xiàn)在該按鈕的標(biāo)題由默認(rèn)的“按鈕1”變?yōu)椤案袷交倍冶恢付艘粋€(gè)宏。 8)試著在某個(gè)單元格中輸入文本,單擊按鈕運(yùn)行該宏。 當(dāng)鼠標(biāo)移動(dòng)至該按鈕時(shí)自動(dòng)變成手的形狀,如果要改變其大小或標(biāo)題,只需用右鍵單擊該按鈕就可以進(jìn)行修改和設(shè)置。很明顯,你再也不需記住宏的名字或快捷鍵了,只需按一下按鈕。 2.5 將宏指定給圖片或其他對(duì)象 要

19、執(zhí)行宏有多種方法可以選擇,可以將宏指定給按鈕等控件,還可以指定給圖片、自定義工具欄、窗體甚至可以將宏指定給某個(gè)“事件”,比如單擊工作表,雙擊工作表,激活工作表,打開工作簿等等,“事件”是一個(gè)重要的概念,除此而外“方法”“對(duì)象”都是將來(lái)你會(huì)經(jīng)常接觸到的?,F(xiàn)在它們看來(lái)十分抽象,但是將來(lái)你會(huì)很熟悉這些詞語(yǔ)。指定宏到圖片十分簡(jiǎn)單,只需單擊某個(gè)圖片,單擊快捷菜單中的“指定宏”進(jìn)行設(shè)置即可。 如果不希望在工作表上添加控件或圖片執(zhí)行宏,還有一種方法可以選擇:將宏指定給“工具欄按鈕”,可按如下步驟進(jìn)行: 1)打開“HOUR2”工作簿,選擇“工具”-“定義”,顯示“自定義工具欄”對(duì)話框。 2)從“類別”列表框中

20、選擇“宏”,從“命令”列表框中選擇“自定義按鈕”。 3)將“自定義按鈕”拖動(dòng)到工具欄。 4)右鍵單擊該按鈕,選擇“指定宏”,顯示“指定宏”對(duì)話框。 5)選擇“格式化文本”并確定。 6)單擊“關(guān)閉”按鈕,關(guān)閉“自定義工具欄”對(duì)話框。 7)試著在某個(gè)單元格中輸入文本,單擊工具欄按鈕運(yùn)行該宏。 小結(jié)與思考: 宏存放于三個(gè)可能的位置。個(gè)人宏工作簿存放的位置和特性。執(zhí)行宏的方式。指定宏是為某個(gè)對(duì)象的事件指定一個(gè)程序,一旦這個(gè)對(duì)象以該事件激活,系統(tǒng)將運(yùn)行指定的程序。 常用的對(duì)象有:workbook,worksheet,range,cells,圖表,圖片,數(shù)據(jù)透視表,控件,窗體,工具欄.每一個(gè)對(duì)象都有其可以

21、響應(yīng)的特殊事件(也有一些通用事件如單擊或雙擊等)。如有興趣,可以通過(guò)excel幫助文件查詢這幾個(gè)詞條。在excel中看到的幾乎都是屬于某個(gè)對(duì)象,而在excel中所做的許多工作,如移動(dòng)一下鼠標(biāo)等等,都可能觸發(fā)了一個(gè)事件。下一學(xué)時(shí)我們將共同學(xué)習(xí)“控件”。 <dvnews_page=(3):學(xué)習(xí)控件3.1 excel開發(fā)過(guò)程簡(jiǎn)介 需要對(duì)以下問(wèn)題有個(gè)大致的概念. 1)誰(shuí)使用-這決定了程序的操作難度及界面感觀. 2)數(shù)據(jù)來(lái)源和保存在哪里-這決定了程序的結(jié)構(gòu). 3)如何操作-這將決定程序的界面和細(xì)節(jié). 4)數(shù)據(jù)處理的結(jié)果-最終決定程序的價(jià)值. 3.2 認(rèn)識(shí)不同的控件 開始時(shí)請(qǐng)關(guān)閉所有工作簿,打開一個(gè)

22、新工作簿并另存為"HOUR3".在工具欄上單擊鼠標(biāo)右鍵,從快捷菜單中選擇"窗體",顯示"窗體"工具欄.其中有16個(gè)控件,只有9個(gè)可放到工作表內(nèi)。 1)標(biāo)簽:它用于表現(xiàn)靜態(tài)文本。 2)分組框:它用于將其他控件進(jìn)行組合。 3)按鈕:用于執(zhí)行宏命令。 4)復(fù)選框:它是一個(gè)選擇控件,通過(guò)單擊可以選擇和取消選擇,可以多項(xiàng)選擇。 5)選項(xiàng)按鈕:通常幾個(gè)選項(xiàng)按鈕組合在一起使用,在一組中只能選擇一個(gè)選項(xiàng)按鈕。 6)列表框:用于顯示多個(gè)選項(xiàng)并從中選擇。只能單選。 7)組合框:用于顯示多個(gè)選項(xiàng)并從中選擇。可以選擇其中的項(xiàng)目或者輸入一個(gè)其它值。 8)滾動(dòng)條

23、:不是你常見的來(lái)給很長(zhǎng)的窗體添加滾動(dòng)能力的控件,而是一種選擇機(jī)制。例如調(diào)節(jié)過(guò)渡色的滾動(dòng)條控件。包括水平滾動(dòng)條和垂直滾動(dòng)條。 9)微調(diào)控件:也是一種數(shù)值選擇機(jī)制,通過(guò)單擊控件的箭頭來(lái)選擇數(shù)值。例如改變Windows日期或時(shí)間就會(huì)使用到微調(diào)控件。 3.3 向工作表添加控件 用excel設(shè)計(jì)界面十分簡(jiǎn)單,要將控件添加到工作表上,可以按以下步驟操作: 1)創(chuàng)建新工作簿并另存為"HOUR3",顯示"窗體"工具欄. 2)選擇"標(biāo)簽"控件. 3)將鼠標(biāo)定位到E1,此時(shí)鼠標(biāo)變成小十字. 4)按下左鍵,拖動(dòng)大約四個(gè)單元格長(zhǎng)度,放開鼠標(biāo)左鍵.如果希望控件

24、大小易于控制,可在創(chuàng)建該控件時(shí)按下ALT拖動(dòng). 5)在標(biāo)簽1上單擊右鍵,選擇"編輯文字",現(xiàn)在可以輸入文字.完成后,單擊任何單元格退出文字編輯. 6)通過(guò)以上步驟可以添加其它控件到工作表中,不再贅述. 3.4 設(shè)置控件的特性 設(shè)置控件的特性,可以按以下步驟操作: 1)選中先前創(chuàng)建的復(fù)選框控件,如果沒(méi)有馬上創(chuàng)建一個(gè). 2)右擊該控件,選擇"控制"選項(xiàng)卡. 3)在"單元格鏈接"中輸入A1并確定. 4)單擊任意單元格,退出設(shè)置. 5)用鼠標(biāo)左鍵單擊復(fù)選框,A1出現(xiàn)TRUE,這意味著該控件被選中.再次單擊該控件,A1出現(xiàn)FALSE. 6)選擇

25、剛才創(chuàng)建的滾動(dòng)條控件.并調(diào)出"設(shè)置控件格式"對(duì)話框. 7)在"單元格鏈接"中輸入A3并確定. 8)在滾動(dòng)條外任意單元格單擊鼠標(biāo)左鍵,使?jié)L動(dòng)條不被選擇. 9)用鼠標(biāo)單擊滾動(dòng)條上的箭頭,則A1的數(shù)值增加1,繼續(xù)單擊則A1的數(shù)值繼續(xù)增加. 10)保存并關(guān)閉該工作簿. 3.5 給控件命名 當(dāng)創(chuàng)建一個(gè)控件時(shí)excel會(huì)自動(dòng)給它指定一個(gè)名字,但不便于理解和記憶,為控件取名的方法基本和給單元格或區(qū)域取名的方法相同.選中某個(gè)控件,再在位于公式欄上的"名字"編輯框輸入控件名字.這樣就給控件更改了名字. 3.6 使用用戶窗體 1)打開"HOUR

26、3"工作簿,選擇"工具"-"宏"-"VBA編輯器",打開VBA編輯器. 2)在VBA編輯器中選擇工具欄上的"插入用戶窗體"按鈕或者選擇"插入"菜單,從下拉菜單中選擇"用戶窗體" 現(xiàn)在,VBA編輯器中出現(xiàn)一個(gè)名為"USERFORM1"的窗體,"控件工具箱"同時(shí)出現(xiàn),在其中有許多已經(jīng)熟悉的控件,另外還有一些新的控件. 這些新的控件是: C)多頁(yè):外觀類似選項(xiàng)卡條,是包含一頁(yè)或多頁(yè)的控件.選項(xiàng)卡條給人相似的外觀,而多頁(yè)控件的各頁(yè)包含

27、各自不同的控件,有各自不同的布局.多頁(yè)的例子很多,例如:"設(shè)置控件格式"對(duì)話框和"工具"菜單中的"選項(xiàng)"對(duì)話框.以及"格式"菜單中的"單元格."對(duì)話框. D)圖像控件:它允許向窗體上放置圖片.圖片格式須為:*.bmp,*.cur,*.gif,*.ico,*.jpg,*.wmf. F)RefEdit:這是工具箱中默認(rèn)情況下的最后一個(gè)控件。它外觀象文本框,通過(guò)這個(gè)控件可以將用戶窗體折疊起來(lái),以便選擇單元格區(qū)域。還記得在使用fx“粘貼函數(shù)”時(shí)的情況嗎? 通過(guò)實(shí)踐,我們會(huì)逐漸掌握每個(gè)控件的特性,這的確需

28、要花時(shí)間,但不必死記硬背。 在對(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é):學(xué)習(xí)完本學(xué)時(shí)后,我們具備了用于程序界面設(shè)計(jì)的基本知識(shí)。我們對(duì)控件不在感到陌生,也明白如何向工作表和窗體添加控件,但控件的內(nèi)容很多,需要邊用邊理解.此后,我們將從界面轉(zhuǎn)移到學(xué)習(xí)編寫代碼,并最終將二者融合。讓我們準(zhǔn)備好學(xué)習(xí)編程吧! 疑難解答 問(wèn)題1.怎樣決定控件的位置?如何選擇添加到工作表

29、還是添加到用戶窗體? 解答:這完全取決于個(gè)人的愛好和應(yīng)用程序的用戶.如果用戶對(duì)excel非常熟悉,那么他們也許更希望以工作表的方式操作.在這種情況下不妨直接在工作表上創(chuàng)建控件;如果你的用戶對(duì)excel不熟悉或者你需要給用戶一個(gè)專業(yè)的界面感覺(jué),那么應(yīng)該使用用戶窗體. 問(wèn)題2.什么情況下該用選項(xiàng)卡條而不是多頁(yè)控件? 解答:如果每一頁(yè)具有相同布局,則應(yīng)選擇選項(xiàng)卡條,否則應(yīng)該選擇多頁(yè). 本節(jié)作業(yè): 1.思考: 1)列舉兩種可以讓用戶進(jìn)行多選一的控件。 2)如何將控件與單元格鏈接起來(lái)。 2.判斷: 1)只有在VBA編輯器中才能添加用戶窗體。 2)在VBA編輯器中看到的窗體網(wǎng)格線在運(yùn)行時(shí)會(huì)自動(dòng)顯示。 3.

30、填空:( )是顯示靜態(tài)文本的控件。 <dvnews_page=(4):理解變量4.4 變量 變量是用于臨時(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 "輸入你的名字:" 現(xiàn)在不要擔(dān)心inputbox語(yǔ)句的語(yǔ)法,將在第六學(xué)時(shí)中了解到有關(guān)這條命令的更多信息. 3)按下F5鍵運(yùn)行過(guò)程,這時(shí)會(huì)顯示一個(gè)輸入框,要求輸入你的名字. 4)輸入你的名字并按&quo

31、t;確定"按鈕,則結(jié)束該過(guò)程. 你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來(lái)存儲(chǔ)用戶輸入的結(jié)果. 變量的數(shù)據(jù)類型 表4-1 VBA數(shù)據(jù)類型 作為ABV程序員,一個(gè)目標(biāo)是選擇需要存儲(chǔ)空間盡量小的數(shù)據(jù)類型來(lái)保存所需要的數(shù)據(jù),這正是表4-1提供各種數(shù)據(jù)類型存儲(chǔ)空間的原因。例如,要保存諸如班級(jí)學(xué)生總數(shù)這樣的小數(shù)字,那么Byte數(shù)據(jù)類型就足夠了。在這種情況下,使用Single數(shù)據(jù)類型只是對(duì)計(jì)算機(jī)存儲(chǔ)空間的浪費(fèi)。 用Dim語(yǔ)句創(chuàng)建變量(聲明變量) 現(xiàn)在,你對(duì)變量可以使用的數(shù)據(jù)類型已經(jīng)比較熟悉了,以下我們將創(chuàng)建變量.創(chuàng)建變量可以使用Dim語(yǔ)句,創(chuàng)建變量通常

32、成為"聲明變量" Dim語(yǔ)句的基本語(yǔ)法如下: Dim 變量名 AS 數(shù)據(jù)類型 變量名必須以字母開始,并且只能包含字母數(shù)字和特定的特殊字符,不能包含空格句號(hào)驚嘆號(hào),也不能包含字符 & $ #.名字最大長(zhǎng)度為255個(gè)字符 </P> 在接下來(lái)的練習(xí)中將說(shuō)明如何在VBA中使用變量,你將要輸入你的名字,并用一個(gè)消息框?qū)⑵滹@示出來(lái).具體步驟如下: 1)創(chuàng)建一個(gè)名為"顯示你的名字"的子程序. 2)輸入以下代碼: Public Sub 顯示你的名字() Dim s名字 As String s名字 = Inputbox("請(qǐng)輸入你的名字:&q

33、uot;) Msgbox "你好"& s名字 <BR>End Sub 3)將鼠標(biāo)放到過(guò)程中的任何地方,按下F5鍵運(yùn)行過(guò)程,會(huì)顯示一個(gè)輸入框. 4)輸入你自己的名字并按回車鍵,會(huì)顯示一個(gè)消息框,顯示的文字中包含你自己的名字. 5)單擊"確定"按鈕,返回過(guò)程中. 變量命名的慣例 下表給出了推薦的變量命名慣例 表4-2 變量命名的前綴 使用數(shù)組 Dim array_name(n) As type (其中n是數(shù)組元素的個(gè)數(shù)) 例如,如果要?jiǎng)?chuàng)建保存10個(gè)學(xué)生名字的數(shù)組,可以用以下語(yǔ)句: Dim s學(xué)生名字(9) As Integer Dim s

34、考試成績(jī)(14) As Integer 聲明數(shù)組時(shí)的另一種方法是不給定大小??梢栽诔绦蜻\(yùn)行時(shí)定義其大小。通過(guò)創(chuàng)建動(dòng)態(tài)數(shù)組就可以做到。例如,你的程序要?jiǎng)?chuàng)建一表格,可以提示用戶輸入表格的行和列的數(shù)目。聲明動(dòng)態(tài)數(shù)組的語(yǔ)法如下: Dim dyn_array() As type 對(duì)數(shù)組聲明后可以在程序運(yùn)行時(shí)用:ReDim語(yǔ)句指定數(shù)組的大小: ReDim dyn_array()(array_size) 參數(shù)array_size代表數(shù)組的新大小。如果要保留數(shù)組的數(shù)值,請(qǐng)?jiān)赗eDim語(yǔ)句后使用保留字Preserve,具體語(yǔ)法如下: ReDim Preserve dyn_array(array_size) 變量

35、賦值 聲明變量后就可以給變量賦值。請(qǐng)注意下列語(yǔ)句中為數(shù)組變量賦值時(shí)索引數(shù)字的使用。 程序清單4-4 Dim i人數(shù) As Integer Dim i考試成績(jī) As Integer Dim i As Integer i人數(shù) = inputbox("輸入學(xué)生的人數(shù):") ReDim Preserve i考試成績(jī)(i數(shù)量) For i = 1 to i人數(shù) i考試成績(jī)(i) = inputbox("輸入考試成績(jī)"& i ) <BR>Next 4.5 使用常量 要聲明常量并設(shè)置常量的值,需要使用const語(yǔ)句.常量聲明后,不能對(duì)它賦一個(gè)新的值

36、.例如,假設(shè)需要聲明一個(gè)常量來(lái)保存銷項(xiàng)稅率,可以使用以下語(yǔ)句: conet 銷項(xiàng)稅率 As Long = 0.17 通常常量聲明時(shí)用全大寫字母以區(qū)分變量. 4.6 作用域 到現(xiàn)在為止,已經(jīng)學(xué)習(xí)了如何定義變量和常量,但是還不知道在何處定義.可以在兩個(gè)地方定義常量和變量: 過(guò)程中定義和在模塊頂部一個(gè)名為"通用聲明"的區(qū)域內(nèi)定義.而且定義的位置就決定了租用域. 在過(guò)程中聲明,該變量只能在該過(guò)程中使用,其他過(guò)程中不能使用這個(gè)變量和常量,這中變量成為局部變量或過(guò)程級(jí)變量;在模塊頂部聲明的變量稱為模塊級(jí)變量,該變量在該模塊的所有過(guò)程中都可以使用。 還有一種等級(jí)的作用域稱為公共級(jí)。公共級(jí)

37、變量可以在應(yīng)用程序的任何過(guò)程中使用,不論過(guò)程和變量是否定義在一個(gè)模塊。這就使得公共級(jí)變量在使用中十分靈活,但是公共級(jí)變量在程序運(yùn)行時(shí)一直保留在內(nèi)存中,這樣就占用了系統(tǒng)資源。要?jiǎng)?chuàng)建公共級(jí)變量,可以用Public語(yǔ)句,具體語(yǔ)法如下: Public variablename As datatype 要?jiǎng)?chuàng)建公共級(jí)常量,具體語(yǔ)法如下: Public const CONSTANAME datatype = value 公共級(jí)變量或常量必須在模塊頂部的“通用聲明”區(qū)域中定義。 4.7 小結(jié) 本課的重點(diǎn)是變量和常量。在本課中你學(xué)會(huì)了如何創(chuàng)建變量來(lái)保存非靜態(tài)的數(shù)據(jù)。我們了解了VBA的數(shù)據(jù)類型,我們也學(xué)會(huì)了創(chuàng)建常

38、量來(lái)保存靜態(tài)的數(shù)據(jù)。本課的最后部分我們學(xué)習(xí)了變量和常量的作用域。 4.8 疑難解答 1.如果希望在多個(gè)位置使用變量的數(shù)據(jù),應(yīng)該在何處定義該變量? 答:必須在模塊頂部的“通用聲明”區(qū)域內(nèi)定義。對(duì)于模塊級(jí)變量用Dim語(yǔ)句,對(duì)于公共級(jí)變量用Public語(yǔ)句 2.模塊是否獨(dú)立于工作簿? 答:不,實(shí)際上模塊是工作簿的一部分,當(dāng)保存工作簿時(shí),對(duì)模塊所做的改變也同時(shí)保存下來(lái). 3.為什么不應(yīng)該將所有變量定義為Variant數(shù)據(jù)類型? 答:Variant類型的數(shù)據(jù),占用較多的內(nèi)存,并且影響應(yīng)用程序的性能. <dvnews_page=(5):利用VBA設(shè)置工作表使用權(quán)限 一般保護(hù)工作表采取的方法是用exc

39、el菜單中的“保護(hù)”命令,有時(shí)這尚嫌不足,比如一些機(jī)密文件根本要讓某些使用者無(wú)法看到,但又需要他來(lái)操作工作簿中的其他表,怎么辦? 可以打開VBA編輯器,打開“工程資源管理器”,雙擊該工作表,現(xiàn)在出現(xiàn)的是設(shè)置該表的屬性的編輯窗口,單擊窗口左上的下拉列表框,選擇worksheet ,這時(shí)再?gòu)脑摯翱谟疑戏降牧斜砜蛑羞x擇Active(“激活”),這時(shí)自動(dòng)顯示如下的語(yǔ)句塊: Private Sub Worksheet_Activate() End Sub 在其中加入代碼:(假設(shè)用"123"作為密碼,Sheet"機(jī)密文檔"為限制權(quán)限文檔,sheet"普通文

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

41、quot;).Select Else MsgBox "密碼錯(cuò)誤,即將退出!" Sheets("普通文檔").Select End If End Sub 這樣做仍有一個(gè)問(wèn)題,就是越權(quán)使用者仍會(huì)看到一些文件的片段,即在提示密碼的那段時(shí)間。好,你可以這樣做,用上述方法選擇工作表的Deactivate事件,輸入以下代碼: 這段程序使得此工作表在不被激活時(shí),所有文字為白色。然后,在第一個(gè)程序中的Range("A1").Select后插入一行,寫入以下代碼: 這段程序,在你輸入正確密碼后,將該表所有文字轉(zhuǎn)變?yōu)樯罨疑?完整的程序如下: Priva

42、te Sub Worksheet_Activate() If Application.InputBox("請(qǐng)輸入操作權(quán)限密碼:") = 123 Then Range("A1").Select Else MsgBox "密碼錯(cuò)誤,即將退出!" Sheets("普通文檔").Select End If <dvnews_page=(6):提高excel中VBA的效率由于Microsoft office辦公套件的廣泛應(yīng)用,以及該軟件版本的不斷提升,功能不斷完善,在office辦公套件平臺(tái)上開發(fā)出的的VBA應(yīng)用程序越來(lái)

43、越多,而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)常編寫與excel對(duì)象的屬性、方法相同功能的VBA代碼段,而這些代碼段的運(yùn)行效率顯然與excel對(duì)象的屬性、方法完成任務(wù)的速度相差甚大。例如用Range的屬性CurrentRegion來(lái)返回Range 對(duì)象,該對(duì)象代表當(dāng)前區(qū)。(當(dāng)前區(qū)指以任意空白行及空白列的組合為邊界

44、的區(qū)域)。同樣功能的VBA代碼需數(shù)十行。因此編程前應(yīng)盡可能多地了解excel對(duì)象的屬性、方法。 充分利用Worksheet函數(shù)是提高程序運(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 而下面代碼程序比上面例子快得多: A1:A1000) 其它函數(shù)如Count,Counta,Countif,Match,L

45、ookup等等,都能代替相同功能的VBA程序代碼,提高程序的運(yùn)行速度。 方法2:盡量減少使用對(duì)象引用,尤其在循環(huán)中 每一個(gè)excel對(duì)象的屬性、方法的調(diào)用都需要通過(guò)OLE接口的一個(gè)或多個(gè)調(diào)用,這些OLE調(diào)用都是需要時(shí)間的,減少使用對(duì)象引用能加快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ǔ)句比上面的快 With Workbooks(1).Sheets(1).Ra

46、nge(A1:A1000).Font .Name = Pay .FontStyle = Bold . End With 2使用對(duì)象變量。 如果你發(fā)現(xiàn)一個(gè)對(duì)象引用被多次使用,則你可以將此對(duì)象用Set 設(shè)置為對(duì)象變量,以減少對(duì)對(duì)象的訪問(wèn)。如: Workbooks(1).Sheets(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.Ra

47、nge(A2).Value = 200 3在循環(huán)中要盡量減少對(duì)象的訪問(wè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 方法3:減少對(duì)象的激活和選擇 如果你的通過(guò)錄制宏來(lái)學(xué)習(xí)VBA的,則你的VBA程序里一定充滿了對(duì)象的激活和選擇,例如Wor

48、kbooks(XXX).Activate、Sheets(XXX).Select、Range(XXX).Select等,但事實(shí)上大多數(shù)情況下這些操作不是必需的。例如 Sheets(Sheet3).Select Range(A1).Value = 100 Range(A2).Value = 200 可改為: With Sheets(Sheet3) .Range(A1).Value = 100 .Range(A2).Value = 200 End With 方法4:關(guān)閉屏幕更新 如果你的VBA程序前面三條做得比較差,則關(guān)閉屏幕更新是提高VBA程序運(yùn)行速度的最有效的方法,縮短運(yùn)行時(shí)間2/3左右。關(guān)閉屏

49、幕更新的方法: Application.ScreenUpdate = False 請(qǐng)不要忘記VBA程序運(yùn)行結(jié)束時(shí)再將該值設(shè)回來(lái): Application.ScreenUpdate = True 以上是提高VBA運(yùn)行效率的比較有效的幾種方法。 <dvnews_page=(7):如何在excel里使用定時(shí)器 用過(guò) excel 里的加載宏 "定時(shí)保存" 嗎?可惜它的源程序是加密的,現(xiàn)在就上傳一篇介紹實(shí)現(xiàn)它的文檔。 在 office 里有個(gè)方法是 application.ontime ,具體函數(shù)如下: expression.OnTime(EarliestTime, Proce

50、dure, LatestTime, Schedule) 如果想進(jìn)一步了解,請(qǐng)參閱 excel 的幫助。 這個(gè)函數(shù)是用來(lái)安排一個(gè)過(guò)程在將來(lái)的特定時(shí)間運(yùn)行,(可為某個(gè)日期的指定時(shí)間,也可為指定的時(shí)間段之后)。通過(guò)這個(gè)函數(shù)我們就可以在 excel 里編寫自己的定時(shí)程序了。下面就舉兩個(gè)例子來(lái)說(shuō)明它。 1.在下午 17:00:00 的時(shí)候顯示一個(gè)對(duì)話框。 Sub Run_it() Application.OnTime TimeValue("17:00:00"), "Show_my_msg" 設(shè)置定時(shí)器在 17:00:00 激活,激活后運(yùn)行 Show_my_msg 。 End Sub Sub Show_my_msg() msg = MsgBox("現(xiàn)在是 17:00:00 !", vbInformation, "自定義信息") End Sub 2.模仿 excel 97 里的 "自動(dòng)保存宏",在這里定時(shí) 5 秒出現(xiàn)一次 Sub auto_open() MsgBox "歡迎你,在這篇文檔里,每

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論