VBA教程(基礎入門)_第1頁
VBA教程(基礎入門)_第2頁
VBA教程(基礎入門)_第3頁
VBA教程(基礎入門)_第4頁
VBA教程(基礎入門)_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

14、工作簿l 試著練習一下保存一個簡單試著練習一下保存一個簡單的宏到個人宏工作簿的宏到個人宏工作簿, ,該宏為文本加下劃線并改為該宏為文本加下劃線并改為斜體斜體, ,步驟如下步驟如下: : l1 1)建立一個名為建立一個名為“HOUR2”HOUR2”的工作簿,選擇的工作簿,選擇“工具工具”-“-“宏宏”-“-“錄制新宏錄制新宏”, ,顯示顯示“錄錄制新宏制新宏”對話框對話框。l2 2)輸入)輸入“格式化文本格式化文本”作為宏名。作為宏名。l3 3)從)從“保存在保存在”下拉框中選擇下拉框中選擇“個人宏工作簿個人宏工作簿”。l4 4)單擊單擊“確定確定”按鈕按鈕. .現在進入錄制模式現在進入錄制模式

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

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

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

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

19、令” ”列表框中列表框中選擇選擇“ “自定自定義義按按鈕鈕” ”。 。將將“自定義按鈕自定義按鈕”拖動拖動到工具欄到工具欄 右鍵單擊該按鈕,選擇右鍵單擊該按鈕,選擇“指定宏指定宏”,顯示,顯示“指定指定宏宏”對話框對話框 選擇選擇“格式化文格式化文本本”并確定并確定單擊單擊“關閉關閉”按鈕,按鈕,關閉關閉“自定義工具自定義工具欄欄”對話框對話框試著在某試著在某個單元格個單元格中輸入文中輸入文本,單擊本,單擊工具欄按工具欄按鈕運行該鈕運行該宏宏EXCELEXCEL開發(fā)過程簡介開發(fā)過程簡介 l 需要對以下問題有個大致的概念需要對以下問題有個大致的概念. . 誰使用誰使用這決定了程序的操作這決定了程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

41、 .數組中的元素通過數組中的元素通過索引數字加以區(qū)分索引數字加以區(qū)分, ,定義數組的方法如下定義數組的方法如下: :Dim array_name(n) As type(其中n是數組元素的個數)例如例如, ,如果要創(chuàng)建保存如果要創(chuàng)建保存1010個學生名字的數組個學生名字的數組, ,可以用以下語句可以用以下語句: :Dim s學生名字(9) As Integer 使用數組使用數組聲明數組時的另一種方法是不給定大小??梢栽诔绦蜻\行時定義其大小。通過創(chuàng)建動態(tài)數組就可以做到。例如,你的程序要創(chuàng)建一表格,可以提示用戶輸入表格的行和列的數目。聲明動態(tài)數組的語法如下:Dim dyn_array() As ty

42、pe對數組聲明后可以在程序運行時用ReDim語句指定數組的大小: ReDim dyn_array()(array_size)參數array_size代表數組的新大小。如果要保留數組的數值,請在ReDim語句后使用保留字Preserve,具體語法如下:ReDim Preserve dyn_array(array_size)變量賦值變量賦值 l 聲明變量后就可以給變量賦值。請注意下列語句中為數組變量賦值時索引數字的使用。Dim i人數 As Integer Dim i考試成績 As Integer Dim i As Integer i人數 = inputbox(輸入學生的人數:) ReDim Pr

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

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

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

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

47、 )If Application.InputBox(請輸入操作權限密碼:) = 123 Then Range(A1).Select Else Msgbox 密碼錯誤,即將退出! Sheets(普通文檔).Select End if 利用利用VBA設置工作表使用權限設置工作表使用權限l 完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate() If Application. InputBox(請輸入操作權限密碼:) = 123 Then Range(A1).Select Else MsgBox 密碼錯誤,即將退出! Sheets(普通文檔).Select

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

49、后,在第一個程序中的Range(A1).SelectRange(A1).Select后插入一行,寫入以下代碼:后插入一行,寫入以下代碼:ActiveSheet.Cells.Font.ColorIndex = 56這段程序,在你輸入正確密碼后,將該表所有文字轉變?yōu)樯罨疑_@段程序,在你輸入正確密碼后,將該表所有文字轉變?yōu)樯罨疑?。利用利用VBA設置工作表使用權限設置工作表使用權限完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate() If Application.InputBox(請輸入操作權限密碼:) = 123 Then Range(A1).Selec

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

51、WorksheetWorksheet函數函數由于Excel對象多達百多個,對象的屬性、方法、事件多不勝數,對于初學者來說可能對它們不全部了解,這就產生了編程者經常編寫與Excel對象的屬性、方法相同功能的VBA代碼段,而這些代碼段的運行效率顯然與Excel對象的屬性、方法完成任務的速度相差甚大。提高提高VBAVBA運行效率運行效率ForEachcInWorksheet(1).Range(A1:A1000)TotalValue=TotalValuec.ValueNextAverageValue=TotalValue/Worksheet(1).Range(A1:A1000).Rows.Count如

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

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

54、(A1:A1000).Font.FontStyle=Bold.則以下語句比上面的快則以下語句比上面的快WithWorkbooks(1).Sheets(1).Range(A1:A1000).Font.Name=Pay.FontStyle=Bold.EndWith提高提高VBAVBA運行效率運行效率2 2使用對象變量。使用對象變量。如果你發(fā)現一個對象引用被多次使用,則你可以將此對象用如果你發(fā)現一個對象引用被多次使用,則你可以將此對象用SetSet 設置為設置為對象變量,以減少對對象的訪問。如:對象變量,以減少對對象的訪問。如: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.Range(A2).Value = 200提高提高VBAVBA運行效率運行效率3 3在循環(huán)中要盡量減少對象的訪問。在循環(huán)中要盡量減少對象的訪問。For k = 1 To 1000 Sheets(Sheet1).Select Cells(k,1).Value = Cells(1,1).Va

溫馨提示

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

評論

0/150

提交評論