




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Office編程工具編程工具VBA(1)-宏與VBA什么是宏什么是宏 宏是一段定義好的操作,它可以是一段程序代碼,也可以是一連串的指令集合。 宏的作用可以使頻繁執(zhí)行的動作自動化 節(jié)省時間,提高工作效率,又能減少失誤 宏的基本操作宏的基本操作 錄制宏需要經(jīng)常重復執(zhí)行的某項任務,就可以把執(zhí)行這些任務的步驟全部錄制在宏里,把宏變?yōu)榭勺詣訄?zhí)行的任務 執(zhí)行宏的操作執(zhí)行宏的命令在工具欄上設置宏按鈕使用窗體控件認識VBA VBA(Visual Basic for Applications)是Microsoft Office 系列的內(nèi)置編程語言,是非常流行的應用程序開發(fā)語言VB(Visual Basic) 的
2、子集。它“寄生于”O(jiān)ffice應用程序,是Office XP套裝軟件的一個十分重要的組件。它功能強大,面向?qū)ο螅∣OP),非常適合入門級學習。利用它可以實現(xiàn)繁瑣、機械的日常工作的自動化,從而極大提高用戶的辦公效率。序言序言 VBA是一個通用程序語言,可共享Microsoft各種相關(guān)的重要軟件。 以VBA編寫的程序允許用戶將其復制到Visual Basic中加以調(diào)試,用Visual Basic宏來控制Excel。 當記錄宏不能滿足用戶需要或用記錄宏無法記錄命令時,可以用VBA語言創(chuàng)造宏來控制工作簿的各項操作。 創(chuàng)建用戶對話框、工具按鈕或自定義命令,把Excel提供的多個工具按鈕連接起來,作為一個
3、工具按鈕。 利用重復語句控制循環(huán)宏內(nèi)操作,利用不同參數(shù)執(zhí)行某個相關(guān)功能模塊,使宏指令完成一系列復雜操作。來連接多個宏。 VBA提供了許多內(nèi)部函數(shù),還允許用戶自定義函數(shù)來簡化對工作簿、工作表、圖表等復雜操作。VBA界面界面VBA和和VB的主要區(qū)別是的主要區(qū)別是 1. VB用于創(chuàng)建標準的應用程序,VBA是使已有的應用程序(Office)自動化。 2. VB具有自己的開發(fā)環(huán)境,VBA寄生于已有的應用程序(Office)。 3. VB開發(fā)出的應用程序可以是可執(zhí)行文件(*.EXE),VBA開發(fā)的程序必須依賴于它的“父”應用程序(Office)。 1. 使重復的任務自動化。2. 自定義工具欄、菜單和界面。
4、3. 簡化模板的使用。 自定義Office,使其成為開發(fā)平臺。5. 創(chuàng)建報表。6. 對數(shù)據(jù)進行復雜的操作和分析。VBA可以實現(xiàn)如下一些功能可以實現(xiàn)如下一些功能Office作為開發(fā)平臺的主要優(yōu)點作為開發(fā)平臺的主要優(yōu)點1. Office本身功能強大,包括打印、文件處理、格式化和文本編輯等。2. Office應用軟件及其VBA內(nèi)置大量函數(shù)、語句、方法等,功能非常豐富。 3. Office界面熟悉,便于軟件推廣應用。 便于發(fā)布。只需要發(fā)布含有VBA代碼的文檔,無需考慮運行環(huán)境,因為Office是普遍配備的應用軟件。 5利用宏可以實現(xiàn)部分程序設計自動化,大大提高軟件開發(fā)效率。1 宏 宏(Macro)是一
5、組VBA語句。可以理解為一個程序段,或一個子程序。在Office中,宏可以直接編寫,也可以通過錄制形成。錄制宏,實際上就是將一系列操作過程記錄下來并由系統(tǒng)自動轉(zhuǎn)換為VBA語句。這是目前最簡單的編程方法,也是VBA最有特色的地方。 1.1 宏的錄制與執(zhí)行宏的錄制與執(zhí)行 1.2 宏的編輯宏的編輯 1.3 為宏指定快捷鍵為宏指定快捷鍵 1.4 指定宏保存的位置指定宏保存的位置 1.5 將宏指定給按鈕將宏指定給按鈕 1.6 將宏指定給圖片或工具欄按鈕將宏指定給圖片或工具欄按鈕 下面錄制一個非常簡單的宏,如下步驟:下面錄制一個非常簡單的宏,如下步驟: 在在“工具工具|宏宏”菜單中選菜單中選“錄制新宏錄制
6、新宏”項。項。 在在“錄制新宏錄制新宏”對話框中輸入宏名,單擊對話框中輸入宏名,單擊“確定確定”按鈕。此時,屏幕上顯示出按鈕。此時,屏幕上顯示出“停止錄制停止錄制”工具欄。工具欄。 執(zhí)行相關(guān)操作,如:設置文字格式的顏色。執(zhí)行相關(guān)操作,如:設置文字格式的顏色。 單擊單擊“停止錄制停止錄制”工具欄按鈕,結(jié)束宏錄制過程。工具欄按鈕,結(jié)束宏錄制過程。也可以選擇也可以選擇“工具工具|宏宏|停止錄制停止錄制”菜單結(jié)束宏錄制。菜單結(jié)束宏錄制。錄制完一個宏后就可以執(zhí)行它了錄制完一個宏后就可以執(zhí)行它了。宏的錄制與執(zhí)行宏的編輯 對已經(jīng)存在的宏,我們可以查看代碼,也可以進行編輯修改。對已經(jīng)存在的宏,我們可以查看代碼
7、,也可以進行編輯修改。 選擇選擇“工具工具|宏宏|宏宏”菜單,在菜單,在“宏宏”對話框中選擇列對話框中選擇列表中的宏名表中的宏名,單擊單擊“編輯編輯”按鈕??梢栽诎粹o??梢栽赩BA的編輯器窗的編輯器窗口修改宏??谛薷暮辍?編輯宏同樣非常簡單。同時我們知道,通過編輯宏可編輯宏同樣非常簡單。同時我們知道,通過編輯宏可以刪除多余的語句,提高運行速度,也可以加入判斷或以刪除多余的語句,提高運行速度,也可以加入判斷或循環(huán)等無法錄制的語句,增加宏的功能。循環(huán)等無法錄制的語句,增加宏的功能。 許多過程可以用錄制宏來完成。但錄制的宏無判斷或許多過程可以用錄制宏來完成。但錄制的宏無判斷或循環(huán)能力,人機交互能力差
8、,即用戶無法進行輸入,計循環(huán)能力,人機交互能力差,即用戶無法進行輸入,計算機無法給出提示,無法顯示對話框,無法顯示自定義算機無法給出提示,無法顯示對話框,無法顯示自定義窗體。因此,需要對錄制的宏進行編輯修改。窗體。因此,需要對錄制的宏進行編輯修改。 快捷鍵即快速執(zhí)行某項操作的組合鍵。例如:CTRL+C 在許多程序中代表“復制”命令。 當給宏指定了快捷鍵后,就可以用快捷鍵來執(zhí)行宏,而不必通過“工具”菜單。 可以在創(chuàng)建宏時指定快捷鍵,也可以在創(chuàng)建后再指定。 注意:當包含宏的文檔打開時,為宏指定快捷鍵會覆蓋原有快捷鍵的功能。因此,在定義新的快捷鍵時,盡量避開系統(tǒng)已定義的常用快捷鍵。為宏指定快捷鍵指定
9、宏保存的位置 VBA主要的目標是為自動化提供一個易于操作的界面。“按鈕”是最常見的界面組成元素之一。通過使用“窗體”工具欄,可以為Office的文檔添加按鈕。在創(chuàng)建完一個按鈕后,可以為它指定宏,然后就可以通過單擊按鈕來執(zhí)行宏了。 此后,單擊按鈕就可以運行該宏。在按鈕上右擊鼠標,可改變大小或標題。將宏指定給按鈕 將宏指定給圖片或工具欄按鈕 除了將宏指定給按鈕外,還可以指定給圖片和工具欄按鈕。 指定宏到圖片十分簡單,用“插入|圖片”菜單或其他方法在當前工作表放置圖片后,右擊圖片,在快捷菜單中選“指定宏”即可進行設置。 將宏指定給“工具欄按鈕”,可按如下步驟進行: 選擇“工具|自定義”菜單,顯示“自
10、定義”對話框。 在“命令”卡中,從“類別”列表框中選擇“宏”,從“命令”列表框中將“自定義按鈕”拖動到任意一個工具欄上。 右擊該按鈕,選擇“指定宏”,顯示“指定宏”對話框。 選擇需要的宏名并單擊“確定”按鈕。 單擊“關(guān)閉”按鈕,關(guān)閉“自定義”對話框。2 控件與用戶窗體 在工具欄上單擊鼠標右鍵,從快捷菜單中選擇“窗體”,顯示出“窗體”工具欄,其中有16個控件,9個可放到工作表上。1標簽:用于表現(xiàn)靜態(tài)文本。2分組框:用于組合其它控件。3按鈕:用于執(zhí)行宏命令。復選框:它是一個選擇控件,通過單擊可以選擇和取消選擇,可以多項選擇。5選項按鈕:通常幾個選項按鈕組合在一起使用,在一組中只能選擇一個選項按鈕。
11、6列表框:用于顯示多個選項并從中選擇。7組合框:用于顯示多個選項并從中選擇??梢赃x擇其中的項目或者輸入一個其它值。 8滾動條:是一種選擇控制機制。包括水平滾動條和垂直滾動條。 9微調(diào)控件:是一種數(shù)值選擇機制,通過單擊控件的箭頭來選擇數(shù)值。 用戶窗體 用戶窗體可以作為程序的對話框和窗口。向用戶窗體添加控件類似于向工作表添加控件。 在VBA編輯器中出現(xiàn)一個名為“UserForm1”的窗體,“控件工具箱”同時出現(xiàn),在其中有許多已經(jīng)熟悉的控件,另外還有一些新的控件。這些新的控件是: 1切換按鈕:該控件如果被選中,那么會保持被按下的狀態(tài)。如果再次單擊它就恢復為沒有按下的狀態(tài)。 2選項卡條(TabStri
12、p):它是包含多個選項卡的控件。通常用來對相關(guān)的信息進行組織或分類。 3多頁:外觀類似選項卡條,是包含一頁或多頁的控件。選項卡條給人相似的外觀,而多頁控件的各頁包含各自不同的控件,有各自不同的布局。如果每一頁具有相同布局,則應選擇選項卡條,否則應該選擇多頁。 圖像控件:它允許向窗體上放置圖片。 5RefEdit:它外觀象文本框,通過這個控件可以將用戶窗體折疊起來,以便選擇單元格區(qū)域。對象、屬性、方法和事件 同其它任何面向?qū)ο蟮木幊陶Z言一樣,VBA里也有對象、屬性、方法和事件。 所謂對象,就是代碼和數(shù)據(jù)的組合。如表、窗體或文本框等都是對象。 所謂屬性,是指對象的特性,像大小、顏色、狀態(tài)等。所謂方
13、法指的是對象能執(zhí)行的動作,如刷新等。 事件是一個對象可以辨認的動作,像單擊鼠標或按下某鍵等,并且可以寫某些代碼針對此述動作來做響應?!纠纠?】 窗體、對象、屬性范例窗體、對象、屬性范例 新建一個窗體,放置兩個按鈕和一個文字框控件。按鈕的標題分別定義為“顯示”和“清除”。單擊“顯示”按鈕,在文字框中顯示一行文字,單擊“清除”按鈕,清除文字框中的文字。 4 VBA語法基礎(chǔ) 1 變量和常量變量和常量 2 運算符運算符 3 注釋注釋 4 連寫和斷行連寫和斷行 注釋與注釋與連寫、斷行 好的程序一般都有注釋,這對程序的維護有很大的好處。 在VBA程序中,注釋可以通過以下兩種方式實現(xiàn): (1) 使用Rem
14、語句。 (2) 用單引號()號。 程序中,一般一個語句占一行,但有時候可能需要在一行中寫幾個語句。這時需要用到“:”來分開語句。 例如: a=1:b=2 有時一個語句太長,書寫起來不方便,看上去也不美觀,希望將其分開寫成幾行。此時要用到空白加下劃線(_)。 變量和常量 1變量 2變量的數(shù)據(jù)類型 3聲明變量 聲明數(shù)組 5變量賦值 6常量變量變量 變量用于臨時保存數(shù)據(jù)。程序運行時,變量的數(shù)據(jù)可以改變。在VBA代碼中可聲明和使用變量來臨時存儲數(shù)據(jù)或?qū)ο蟆?例如: Dim MyName As String 聲明一個名為MyName的字符串變量 MyName=北京 給變量賦值 MyName=上海 改變量
15、的值數(shù)據(jù)類型數(shù)據(jù)類型 變量的數(shù)據(jù)類型控制變量允許保存何種類型的數(shù)據(jù)。表1列出了VBA支持的數(shù)據(jù)類型,同時列出了各種類型的變量所需要的存儲空間和能夠存儲的數(shù)據(jù)范圍。進行程序設計時,應選擇占據(jù)存儲空間盡量小的數(shù)據(jù)類型來保存所需要的數(shù)據(jù)。 表1 數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型存儲空間存儲空間數(shù)值范圍數(shù)值范圍Byte(字節(jié))1字節(jié)0255Booleam(布爾)2字節(jié)True或FalseInteger(整型)2字節(jié)-3276832767Long(長整型)4字節(jié)-21474836482147483647Single(單精度)4字節(jié)負值范圍:-3.402823E38 -1.401298E-45正值范圍:1.401
16、298E-45 3.402823E38Double(雙精度)8字節(jié)負值范圍:-1.79769313486232E308 -94065645841247E-324正值范圍:94065645841247E-324 1.79769313486232E308Currency(貨幣)8字節(jié)-922337203685477.5808 922337203685477.5807Decimal12字節(jié)不包括小數(shù)時:+/-79228162514264337593543950335包括小數(shù)時: +/-7.9228162514264337593543950335Date(日期時間)8字節(jié)日期:100年1月1日 999
17、9年12月31日時間:00:00:0023:59:59Object(對象)4字節(jié)任何引用對象String(字符串)字符串的長度變長字符串:0 20億個字符定長字符串:1 64K個字符Varient(數(shù)字)16字節(jié)Double范圍內(nèi)的任何數(shù)值Varient(文本)字符串的長度數(shù)據(jù)范圍和變長字符串相同定義變量定義變量 變量在使用之前,最好進行定義,也就是定義變量的數(shù)據(jù)類型,這樣可以提高程序的可讀性和節(jié)省存儲空間。 變量的數(shù)據(jù)類型可以是表1中的任何一種數(shù)據(jù)類型。變量不經(jīng)聲明直接使用在語法上也是允許的,系統(tǒng)會自動將變量定義為Variant類型,VBA中默認的數(shù)據(jù)類型是Variant。缺點是占用存儲空間
18、較大,而且影響程序的性能,因為VBA必須辨別Variant類型的變量中存儲了何種類型的數(shù)據(jù)。通常使用Dim語句來聲明變量。 變量名必須以字母開始,并且只能包含字母、數(shù)字和特定的字符,最大長度為255個字符??梢栽谝粋€語句中聲明幾個變量。 聲明語句可以放到過程中,創(chuàng)建的變量在過程內(nèi)有效,聲明語句放到模塊頂部,創(chuàng)建的變量在模塊中有效。聲明數(shù)組聲明數(shù)組 數(shù)組是具有相同數(shù)據(jù)類型并共同享有一個名字的一組變量的集合。數(shù)組中的不同元素通過下標加以區(qū)分。 數(shù)組的聲明方式和其它的變量是一樣的,可以使用 Dim、Static、Private 或 Public 語句來聲明。若數(shù)組的大小被指定的話,則它是個固定大小數(shù)
19、組。若程序運行時數(shù)組的大小可以被改變,則它是個動態(tài)數(shù)組。 數(shù)組的下標從0還是從1開始,可由Option Base 語句的設置。如果Option Base沒有指定為 1,則數(shù)組下標從0開始。 在聲明數(shù)組時,不指定下標的上界,即括號內(nèi)為空,則數(shù)組為動態(tài)數(shù)組。動態(tài)數(shù)組可以在執(zhí)行代碼時改變大小。 動態(tài)數(shù)組聲明后,可以在程序中用ReDim語句來重新聲明。ReDim 語句可以重新定義數(shù)組的維數(shù)以及每個維的上界。重新聲明數(shù)組,數(shù)組中存在的值會丟失。若要保存數(shù)組中原先的值,可以使用 ReDim Preserve 語句來擴充數(shù)組。變量賦值變量賦值變量或數(shù)組聲明后,就可以進行賦值。 常量常量變量用來存儲動態(tài)信息。
20、靜態(tài)信息可以用常量表示。它可以供程序多次使用而且便于記憶。比如用PI表示圓周率比3.1415926好得多。要聲明常量并設置常量的值,需要使用const語句。常量通常用全大寫字母以區(qū)別于變量。常量聲明后,不能對它賦一個新的值。與變量一樣,常量的定義的位置也決定了它的作用域。4 運算符VBA中的運算符有四種:算術(shù)運算符、比較運算符、邏輯運算符和連接運算符。用來組成不同類型的表達式。1算術(shù)運算符2比較運算符3邏輯運算符 連接運算符 5運算符的優(yōu)先級 算術(shù)運算符算術(shù)運算符 VBA算術(shù)運算符有7個,他們用于構(gòu)建數(shù)值表達式或返回數(shù)值運算結(jié)果,各運算符的作用和示 例見表2 表2 算術(shù)運算符符號符號作用作用示
21、例示例+加法3+5=8-減法、一元減11-6=5、-6*3=-18*乘法6*3=18/除法10/4=2.5整除196=3mod取模19 mod 6=1指數(shù)32=9比較運算符比較運算符比較運算符用于構(gòu)建關(guān)系表達式,返回邏輯值True、False或Null(空)。 名稱、用法見表3表3 比較運算符符號符號名稱名稱用法用法小于表達式1表達式2=小于或等于表達式1大于表達式1表達式2=大于或等于表達式1=表達式2=等于表達式1=表達式2不等于表達式1表達式2Is同引用對象1Is對象2Like匹配于字符串1Like字符串2邏輯運算符邏輯運算符邏輯運算符用于構(gòu)建邏輯表達式,返回邏輯值True、False或
22、Null(空)。 名稱、語法見表4表4 邏輯運算符符號符號名稱名稱語法語法And與表達式1And表達式2Or或表達式1Or表達式2Not非Not表達式Xor異或表達式1Xor表達式2Eqv等價表達式1Eqv表達式2Imp蘊涵表達式1Imp表達式2連接運算符連接運算符 字符串連接運算符有兩個:“&”和“+”。 其中“+”運算符既可用來計算數(shù)值的和,也可以用來做字符串的串接操作。不過,最好還是使用“&”運算符來做字符串的串接操作。運算符的優(yōu)先級 按優(yōu)先級由高到低的次序排列的運算符如下: 括號 指數(shù) 一元減 乘法和除法 整除 取模 加法和減法 連接 比較 邏輯(And、Or、Not、
23、Xor、Eqv、Imp)。 過程 1 模塊與過程模塊與過程 2 過程的創(chuàng)建與運行過程的創(chuàng)建與運行 3 子程序子程序 4 自定義函數(shù)自定義函數(shù) 模塊與過程 每個VBA應用程序都存在于一個“工程”中。工程下面可分為若干個“模塊”。模塊包括標準模塊、類模塊和對象模塊三種。 模塊中可以定義若干個“過程”。過程中包含一系列用于執(zhí)行某個任務的語句。每個過程都有唯一的名字。過程可以是函數(shù),也可以是子程序。函數(shù)執(zhí)行一系列操作后返回一個函數(shù)值。子程序只執(zhí)行一個或多個操作,而不返回數(shù)值。當錄制完宏查看代碼時,所看到的就是子程序。宏只能錄制子程序,而不能錄制函數(shù)過程。 函數(shù)過程通常情況下稱為函數(shù),要返回一個數(shù)值。這
24、個數(shù)值通常是計算的結(jié)果或是測試的結(jié)果,例如False 或True。可以在模塊中創(chuàng)建和使用自定義函數(shù)。5.2 過程的創(chuàng)建與運行 打開Office文檔,系統(tǒng)自動建立一個工程,工程中自動包含ThisDocument或ThisWorkbook、Sheet1等對象模塊。過程可以在對象模塊中建立,也可以在標準模塊或類模塊中建立。如果模塊不存在,首先需要向工程中添加一個模塊。 模塊與過程隨文檔一起保存。在VBA編輯器窗口都可以通過“文件”菜單。子程序 子程序以Sub開頭,End Sub結(jié)尾。常用語法格式如下: Public|Private Sub 子程序名() Exit Sub End Sub Public
25、關(guān)鍵字可以使子程序在所有模塊中有效。Private關(guān)鍵字使子程序只在本模塊中有效。如果沒有顯式指定,缺省情況是公用的。 子程序可以帶參數(shù)。 Exit Sub 語句的作用是退出子程序。自定義函數(shù) 在VBA中,提供了大量的內(nèi)置函數(shù)。比如字符串函數(shù)Mid()、統(tǒng)計函數(shù)Max()等。在編程時直接引用就可以了。但有時需要按自己的要求定制函數(shù),比如計算半徑為R的圓的面積 A=3.14*R2 我們不可能為每一個不同半徑的園來寫上相似的一段代碼,而應該使用函數(shù)。 用Function 語句可以定義函數(shù),常用的語法形式如下: Public|Private Function 函數(shù)名() As 數(shù)據(jù)類型函數(shù)名=Exi
26、t Function函數(shù)名=End Function 定義函數(shù)時用Public關(guān)鍵字,則所有模塊都可以調(diào)用它。用Private關(guān)鍵字,函數(shù)只用于同一模塊。如果沒有顯式指定,則缺省為公用。 函數(shù)名末尾可使用As子句來聲明返回值的數(shù)據(jù)類型,參數(shù)也可指定數(shù)據(jù)類型。若省略數(shù)據(jù)類型說明,系統(tǒng)會自動根據(jù)賦值確定。 Exit Function 語句的作用是退出Function 過程。流程控制語句 1 If語句語句 2 Select Case語句語句 3 For.Next語句語句 4 Do.Loop語句語句 5 With語句語句 If語句是我們最常用的一種分支語句。它符合人們通常的語言習慣和思維習慣。語句是我
27、們最常用的一種分支語句。它符合人們通常的語言習慣和思維習慣。If語句有三種語法形式。語句有三種語法形式。 if then else 是一個關(guān)系表達式或邏輯表達式。若值為真,則執(zhí)行緊接在關(guān)鍵字是一個關(guān)系表達式或邏輯表達式。若值為真,則執(zhí)行緊接在關(guān)鍵字then后面的語句組。若后面的語句組。若的值為假,則檢測下一個的值為假,則檢測下一個elseif或執(zhí)行或執(zhí)行else關(guān)鍵字后面的語句組,然后繼續(xù)執(zhí)行下一個語句。關(guān)鍵字后面的語句組,然后繼續(xù)執(zhí)行下一個語句。 If語句 if then else end if if then elseif then else end if6.3 Select Case語句
28、語句如果條件復雜,程序需要多個分支,用If語句就會顯得相當累贅,而且程序變得不易閱讀。這時我們可以使用Select Case 語句來寫出結(jié)構(gòu)清晰的程序。Select Case語法如下:Select Case Case Case ElseEnd Select其中的是任何數(shù)值或字符串表達式??梢允窍铝袔追N形式之一:表達式表達式 To 表達式 Is 表達式說明:如果與Case子句中的一個相匹配,則執(zhí)行該子句后面的語句組。若中含有To關(guān)鍵字,則第一個表達式必須小于第二個表達式,值介于兩個表達式之間為匹配。若含有Is關(guān)鍵字,Is代表構(gòu)成的關(guān)系表達式的值為真則匹配。For.Next是一個循環(huán)語句,其語法形
29、式如下: For 循環(huán)變量=初值To 終值 Step 步長Exit ForNext 循環(huán)變量 該循環(huán)語句執(zhí)行時,首先把循環(huán)變量的值設為初值,如果循環(huán)變量的值沒有超過終值,則執(zhí)行循環(huán)體,遇到Next,把步長加到循環(huán)變量上,若沒有超過終值,再循環(huán),直至循環(huán)變量的值超過終止時,才結(jié)束循環(huán),繼續(xù)執(zhí)行后面的語句。步長可正、可負,為1時可以省略。遇到Exit For時,退出循環(huán)。 For.Next語句語句 Do.Loop語句可以循環(huán)執(zhí)行語句組,它有以下兩種形式: DoWhile|UntilExit DoLoop DoExit DoLoop While|Until上面格式中,While和Until的作用正好
30、相反。使用While,則當為真繼續(xù)循環(huán)。使用Until,則當為真時,結(jié)束循環(huán)。把While或Until放在Do子句中,則先判斷后執(zhí)行。把一個While或Until放在Loop子句中,則先執(zhí)行后判斷。Do.Loop語句語句在引用對象的時候,用With可以簡化代碼中對復雜對象的引用??梢杂肳ith語句建立一個“基本”對象,然后進一步引用這個對象上的對象、屬性或方法,直至終止With語句。其語法形式如下: WithEnd WithWith語句語句1 盡量使用系統(tǒng)提供的屬性、方法和函數(shù)盡量使用系統(tǒng)提供的屬性、方法和函數(shù)2 盡量減少使用對象引用盡量減少使用對象引用3 減少對象的激活和選擇減少對象的激活和
31、選擇4 關(guān)閉屏幕更新關(guān)閉屏幕更新 5 變量和常量的使用變量和常量的使用 VBA應用程序的優(yōu)化應用程序的優(yōu)化7.1 盡量使用系統(tǒng)提供的屬性、方法和函數(shù)盡量使用系統(tǒng)提供的屬性、方法和函數(shù) Office對象有上百個,對象的屬性、方法、事件更是多不勝數(shù),對于初學者來說可能對它們不全部了解,因此不能很好地利用這些對象的屬性、方法和函數(shù),而另編VBA代碼段實現(xiàn)相同的功能。自編代碼段一般要比原有對象的屬性、方法和函數(shù)完成任務的效率低的多。充分利用Worksheet函數(shù)是提高程序運行速度的有效的方法。 7.2 盡量減少使用對象引用盡量減少使用對象引用 每個對象的屬性、方法的調(diào)用都需要通過OLE接口的一個或多個
32、調(diào)用,這些OLE調(diào)用都是需要時間的,減少使用對象引用能加快VBA代碼的運行。如果一個對象引用被多次使用,則可以將此對象用Set設置為對象變量,以減少對對象的訪問次數(shù)。在循環(huán)中要盡量減少對象的訪問。7.3 減少對象的激活和選擇減少對象的激活和選擇 如果你的通過錄制宏來學習VBA的,則你的VBA程序里一定充滿了對象的激活和選擇,但事實上大多數(shù)情況下這些操作不是必需的。 7.4 關(guān)閉屏幕更新關(guān)閉屏幕更新 關(guān)閉屏幕更新是提高VBA程序運行速度的最有效的方法。關(guān)閉屏幕更新的方法:Application.ScreenUpdate = False請不要忘記VBA程序運行結(jié)束時再將該值設回來:Applicat
33、ion.ScreenUpdate = True 7.5 變量和常量的使用變量和常量的使用盡管在代碼中使用Variant變量很方便,但VBA在處理Variant變量值比處理顯式類型變量需要更多的時間。使用Integer或Long變量代替Variant變量處理不帶小數(shù)的計算速度會更快。但使用顯式變量會犧牲掉靈活性,如此時可能會遇到溢出問題,而使用Variant變量則能自動處理這種情況。8 信息及代碼的保護信息及代碼的保護 8.1 利用利用VBA設置工作表使用權(quán)限設置工作表使用權(quán)限 通常,我們用EXCEL菜單中的“保護”命令來保護工作表,但有時尚嫌不足。這時可以在VBA編輯器中對需要保護的工作表編碼
34、。 8.2 程序代碼的保護程序代碼的保護 為了不讓使用者查看和修改程序代碼,需要對代碼進行保護。方法如下:進入VBA編輯環(huán)境,打開“工程資源管理器”窗口,用鼠標右擊工程(VBAProject),在彈出菜單中選“VBAProject屬性”項,在“VBAProject 工程屬性”對話框的“保護”卡中,選中“查看時鎖定工程”復選框,然后輸入并確認“查看工程屬性的密碼”,最后單擊“確定”按鈕,保存當前工作簿并退出。再次打開工作簿時,要查看或者修改程序代碼,必須輸入正確的密碼。 9 應用舉例應用舉例 9.1 在在Excel中實現(xiàn)定時提醒中實現(xiàn)定時提醒9.2 在在Word當前文檔中插入多個文件的內(nèi)容當前文
35、檔中插入多個文件的內(nèi)容9.3 用用Word VBA查漢字區(qū)位碼查漢字區(qū)位碼9.4 在在Word中快速輸入中快速輸入GB2312全部漢字全部漢字9.5 在在Word文檔中統(tǒng)計指定字符的出現(xiàn)次數(shù)文檔中統(tǒng)計指定字符的出現(xiàn)次數(shù)9.6 中文小大寫金額中文小大寫金額轉(zhuǎn)換函數(shù)轉(zhuǎn)換函數(shù) 1在上午8點45分顯示一個提醒信息。 進入Excel的VBA編輯環(huán)境,在任意一個模塊中定義兩個過程: 運行過程Run_it,到指定的時刻,屏幕出現(xiàn)的信息如圖所示。 簿后,每十分鐘提醒依次存盤。 進入Excel的VBA編輯環(huán)境,在模塊中定義三個過程:auto_open過程在打開文檔時自動運行,它發(fā)出提示信息后,調(diào)用過程runti
36、mer,過程runtimer用Now+TimeValue(00:10:00) 指定在當前時間過10分鐘開始運行Saveit這個過程。過程Saveit發(fā)出提示信息并提供三種選擇:如果選擇“是”,則通過ActiveWorkbook.Save方法存盤;選擇“否”,不存盤,但再次調(diào)用 Runtimer;選擇“取消”,則結(jié)束程序,不再提示。屏幕出現(xiàn)的提示信息如圖所示。 9.2 在在Word當前文檔中插入多個文件的內(nèi)容當前文檔中插入多個文件的內(nèi)容 在Word應用中,有時需要連續(xù)往當前文檔插入多個文件的內(nèi)容。一般我們是在“插入”菜單中選“文件”項,然后選擇文件夾和文件進行插入。重復以上操作,可插入需要的所有
37、文件內(nèi)容。若插入的文件較多,用這種辦法就顯得枯燥而低效。而用VBA程序使上述工作自動化,可以大大減輕操作負擔,提高工作效率。比如,將長篇文稿分給幾十個人錄入,最后合并到一個文檔;將事先做好的十幾個圖形文件插入當前文檔;從中央電視臺網(wǎng)站下載的節(jié)目時間表中,各臺節(jié)目是一個獨立的文本文件,將它們合并到一個文檔。盡管這些工作量不是很大,但用一段小程序自動實現(xiàn),還是可以節(jié)省一定時間的,感覺也是大不一樣的,更重要的是應用水平、應用技巧的提高會多方面受益的。下面以下載的中央電視臺1至8套節(jié)目時間表合并為例,介紹程序的設計過程和方法,相信對讀者會有所啟發(fā)。 1語句、函數(shù)的選用和程序初稿的形成 用一個不太熟悉的
38、編程環(huán)境或語言編寫程序, Office的宏可以幫我們大忙,它可以使部分程序的設計自動化。將需要的操作過程錄制為宏,就得到了相應的程序,其中該用哪些語句、函數(shù)我們一看便知, 進入Word,選擇“工具|宏”菜單的“錄制新宏”項,在彈出的對話框中用默認的宏名Macro1,單擊“確定”按鈕后就可以進行宏錄制了。用“格式”工具欄的按鈕設置號字為“3號”,對齊方式為“居中”,輸入“中央1套”,回車。設置號字為“5號”,對齊方式為“兩端對齊”,選“插入”菜單的“文件”項,在對話框中選擇需要的文件夾和文件(如C:My Documents八套01.txt),單擊“插入”按鈕,在當前文當中插入該文件的內(nèi)容。停止錄
39、制宏。在“工具|宏”菜單中選“宏”項,在彈出的對話框中選Macro1,單擊“編輯”按鈕 2加工初稿得到需要的程序 通過宏的錄制過程和對應代碼的分析,我們不難發(fā)現(xiàn)各語句和函數(shù)的作用。上面錄制的宏,只是設置了字號、對齊方式,輸入了一行文字,插入了一個文本文件的內(nèi)容。我們的目的是連續(xù)插入多個文本文件的內(nèi)容,并進行必要的格式控制。因此,對錄制的宏進行修改。 3運行程序 在“工具|宏”菜單中選“宏”項,在彈出的對話框中選Macro1,單擊“運行”按鈕,就會將中央電視臺1至8套節(jié)目時間表按順序插入到當前文檔,每套節(jié)目前邊有一個標注文字(三號字、居中),然后是具體節(jié)目時間表(五號字、兩端對齊)。為便于操作,
40、也可以自定義一個工具欄,將宏指定為工具欄上的一個按鈕。不用時可刪除自定義工具欄和按鈕。以上過程看起來好像也比較復雜,實際上真正的意義是一次定義多次使用,而且舉一反三,類似的問題可以直接編程處理。比如,要往當前文檔插入多個圖形文件,文件路徑為“D:gif”,文件名為“bs01.gif”、“bs02.gif”、“bs20.gif”,可直接創(chuàng)建一個宏或進入VBA編程環(huán)境定義一個過程, 程序運行后,將15個圖形文件依次插入當前文檔。請讀者自行分析代碼。 9.3 用用Word VBA查漢字區(qū)位碼查漢字區(qū)位碼 為了保證漢字信息輸入到計算機的準確性,許多場合要使用漢字的區(qū)位碼。因此,填報相關(guān)材料(如中考、高
41、考志愿表等)時,漢字信息需要同時填寫區(qū)位碼。通常,區(qū)位碼可以查表得到,但是如果手頭暫時沒有區(qū)位碼表,怎么查找每個漢字的區(qū)位碼呢?下面的VBA小程序可以幫助我們解決問題。 進入Word,選“工具|宏”菜單的“宏”項,在“宏”對話框中輸入宏名“查區(qū)位碼”,單擊“創(chuàng)建”按鈕,進入VBA編輯環(huán)境選中要查區(qū)位碼的漢字,選擇“工具|宏”菜單的“宏”項,在“宏”對話框中選中宏名“查區(qū)位碼”,單擊“運行”按鈕,就可得到該漢字的區(qū)位碼。為了便于操作,可以自定義一個工具欄,將宏“查區(qū)位碼”指定為工具欄上的一個按鈕:選擇“工具”菜單的“自定義”項,在“自定義”對話框中選“工具欄”卡,然后單擊“新建”按鈕,設置工具欄名稱后,單擊“確定”按鈕。在“自定義”對話框的“命令”卡中選“宏”,將宏“查區(qū)位碼”用鼠標拖到自定義工具欄。以后,只要單擊自定義工具欄上的按鈕,就可以查出選定漢字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年特許金融分析師考試邊界擴展試題及答案
- 銀行從業(yè)資格證考試學術(shù)研究領(lǐng)域探討試題及答案
- 2025年特許金融分析師考試前準備步驟試題及答案
- 銀行從業(yè)資格證考試解讀試題及答案
- 2024年網(wǎng)絡編輯師證書的試題及答案新生代
- 探索2025年國際金融理財師考試試題及答案框架
- 2025年銀行考試試題及答案解析
- 2024年網(wǎng)絡編輯師證書考試的未來展望試題及答案
- 應對改革的特許金融分析師試題及答案
- 2024網(wǎng)絡編輯師考試預測試題及答案
- 直銷隊管理制度
- 股份代持協(xié)議合同6篇
- 2024-2025學年蘇教版七年級生物下冊知識點復習提綱
- DB32-T 5082-2025 建筑工程消防施工質(zhì)量驗收標準
- 室速的觀察及護理
- 餐飲公司績效考核辦法
- 2025年03月春季河北邯鄲市叢臺區(qū)博碩人才引進50人筆試歷年參考題庫考點剖析附解題思路及答案詳解
- 2025年新高考歷史模擬試卷2(含答案解析)
- 急診一科一品一特色護理
- 物流行業(yè)招聘流程及人員配置
- 液化氣充裝站建站可行性研究報告
評論
0/150
提交評論