1.1 VBA是什么
直到90年代早期,使應用程序自動化還是充滿挑戰(zhàn)性的領域.對每個需要自動化的應用程序,人們不得不學習一種不同的自動化語言.例如:可以用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是使已有的應用程序(EXCEL等)自動化
2. VB具有自己的開發(fā)環(huán)境,而VBA必須寄生于已有的應用程序.
3. 要運行VB開發(fā)的應用程序,用戶不必安裝VB,因為VB開發(fā)出的應用程序是可執(zhí)行文件(*.EXE),而VBA開發(fā)的程序必須依賴于它的"父"應用程序,例如EXCEL.
盡管存在這些不同,VBA和VB在結構上仍然十分相似.事實上,如果你已經了解了VB,會發(fā)現學習VBA非?.相應的,學完VBA會給學習VB打下堅實的基礎.而且,當學會在EXCEL中用VBA創(chuàng)建解決方案后,即已具備在WORD ACCESS OUTLOOK FOXPRO PROWERPOINT 中用VBA創(chuàng)建解決方案的大部分知識.
* VBA一個關鍵特征是你所學的知識在微軟的一些產品中可以相互轉化.
* VBA可以稱作EXCEL的“遙控器”.
VBA究竟是什么?更確切地講,它是一種自動化語言,它可以使常用的程序自動化,可以創(chuàng)建自定義的解決方案.
此外,如果你愿意,還可以將EXCEL用做開發(fā)平臺實現應用程序.
1.2 EXCEL環(huán)境中基于應用程序自動化的優(yōu)點
也許你想知道VBA可以干什么?使用VBA可以實現的功能包括:
1. 使重復的任務自動化.
2. 自定義EXCEL工具欄,菜單和界面.
3. 簡化模板的使用.
4. 自定義EXCEL,使其成為開發(fā)平臺.
5. 創(chuàng)建報表.
6. 對數據進行復雜的操作和分析.
用EXCEL作為開發(fā)平臺有如下原因:
1. EXCEL本身功能強大,包括打印,文件處理,格式化和文本編輯.
2. EXCEL內置大量函數.
3. EXCEL界面熟悉.
4. 可連接到多種數據庫.
用其他語言開發(fā)應用程序,一半的工作是編寫一些基本功能的模塊,包括文件的打開和保存,打印,復制等.而用EXCEL作為開發(fā)平臺,則由于EXCEL已經具備這些基本功能,你要做的只是使用它.
1.3 錄制簡單的宏
在介紹學習VBA之前,應該花幾分鐘錄制一個宏。
新術語:“宏”,指一系列EXCEL能夠執(zhí)行的VBA語句。
以下將要錄制的宏非常簡單,只是改變單元格顏色。請完成如下步驟:
1)打開新工作簿,確認其他工作簿已經關閉。
2)選擇A1單元格。調出“常用”工具欄。
3)選擇“工具”—“宏”—“錄制新宏”。
4)輸入“改變顏色”作為宏名替換默認宏名,單擊確定,注意,此時狀態(tài)欄中顯示“錄制”,特別是“停止錄制”工具欄也顯示出來。替換默認宏名主要是便于分別這些宏。
★ 宏名最多可為255個字符,并且必須以字母開始。其中可用的字符包括:字母、數字和下劃線。宏名中不允許出現空格。通常用下劃線代表空格。
5)選擇“格式”的“單元格”,選擇“圖案”選項中的紅色,單擊“確定”。
6)單擊“停止錄制”工具欄按鈕,結束宏錄制過程。
※ 如果“停止錄制”工具欄開始并未出現,請選擇“工具”—“宏”—“停止錄制”。
錄制完一個宏后就可以執(zhí)行它了。
1.4 執(zhí)行宏
當執(zhí)行一個宏時,EXCEL按照宏語句執(zhí)行的情況就像VBA代碼在對EXCEL進行“遙控”。但VBA的“遙控”不僅能使操作變得簡便,還能使你獲得一些使用EXCEL標準命令所無法實現的功能。而且,一旦熟悉了EXCEL的“遙控”,你都會奇怪自己在沒有這些“遙控”的情況下,到底是怎么熬過來的。要執(zhí)行剛才錄制的宏,可以按以下步驟進行:
1)選擇任何一個單元格,比如A3。
2)選擇“工具”—“宏”—“宏”,顯示“宏”對話框。
3)選擇“改變顏色”,選擇“執(zhí)行”,則A3單元格的顏色變?yōu)榧t色。試著選擇其它單元格和幾個單元格組成的區(qū)域,然后再執(zhí)行宏,以便加深印象。
1.5 查看錄制的代碼
到底是什么在控制EXCEL的運行呢?你可能有些疑惑.好,讓我們看看VBA的語句吧.
1)選擇“工具”—“宏”—“宏”,顯示“宏”對話框。
2)單擊列表中的“改變顏色”,選擇“編輯”按鈕。
此時,會打開VBA的編輯器窗口(VBE)。關于該編輯器,以后再詳細說明,先將注意力集中到顯示的代碼上。代碼如下:(日期和姓名會有不同)
Sub 改變顏色()
'
' 改變顏色 Macro
' xw 記錄的宏 2000-6-10
'
'
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub
將來會十分熟悉這種代碼,雖然現在它們看上去像一種奇怪的外語。學習VBA或編程語言在某種程度上比較像在學習一種外語。
Sub 改變顏色():這是宏的名稱。
中間的以“ '”開頭的五行稱為“注釋”,它在錄制宏時自動產生。
以With 開頭到End With 結束的結構是With結構語句,這段語句是宏的主要部分。注意單詞“selection”,它代表“突出顯示的區(qū)域”(即:選定區(qū)域)。With Selection.Interior :它讀作“選擇區(qū)域的的內部”.這整段語句設置該區(qū)域內部的一些“屬性”。
其中:
.ColorIndex = 3: 將該內部設為紅色。注意:有一小圓點,它的作用在于簡化語句,小圓點代替出現在With后的詞,它是With結構的一部分。另外:紅色被數字化為3.(紅色警戒是否可稱作:3號警戒,嗯?)有興趣的話,你將3改為其他數字試試看。
.Pattern = xlSolid:設置該區(qū)域的內部圖案。由于是錄制宏,所以,雖然你并未設置這一項,宏仍然將其記錄下來(因為在“圖案”選項中有此一項,只是你為曾設置而已)。xlSolid表示純色。
.PatternColorIndex = xlAutomatic:表示內部圖案底紋顏色為自動配色。
End With:結束With 語句。
End Sub:整個宏的結束語
1.6 編輯錄制的代碼
在上一節(jié),我們錄制了一個宏并查看了代碼,代碼中有兩句實際上并不起作用。哪兩句?現在,在宏中作一個修改,刪除多余行,直到和下面代碼相同:
Sub 改變顏色()
'
' 改變顏色 Macro
' xw 記錄的宏 2000-6-10
'
'
With Selection.Interior
.ColorIndex = 3
End With
End Sub
完成后,在工作表中試驗一下。你會發(fā)現結果和修改前的狀況一樣。在With 語句前加入一行:
Range("A5").Select
試著運行該宏,則無論開始選擇哪個單元格,宏運行結果都是使A5單元格變紅.
現在可以看到,編輯錄制的宏同樣非常簡單。需要編輯宏是因為以下三個方面的原因。一:在錄制中出錯而不得不修改。二:錄制的宏中有多余的語句需要刪除,提高宏的運行速度。三:希望增加宏的功能。比如:加入判斷或循環(huán)等無法錄制的語句。
1.7 錄制宏的局限性
希望自動化的許多EXCEL過程大多都可以用錄制宏來完成.但是宏記錄器存在以下局限性.通過宏記錄器無法完成的工作有:
1)錄制的宏無判斷或循環(huán)能力.
2)人機交互能力差,即用戶無法進行輸入,計算機無法給出提示.
3)無法顯示EXCEL對話框.
4)無法顯示自定義窗體.
1.8 小結
本課中,你已經掌握了VBA的一些基礎知識,你會錄制宏、編輯宏而且了解了錄制宏的局限性.你很努力.并且已經為將來學習VBA甚至VB等編程語言打下了基礎.關鍵是你已經了解了一個謎底,就是說,你了解了什么是編程.下面是些小練習,做完后才可以去玩喲.
思考:
1)VBA只能用于EXCEL嗎?
2)VBA是基于哪種語言?
3)說說EXCEL和VBA的關系.
4)為什么要用宏?