VBA是VisualBasicForApplication的簡稱,具體說來,可能三天三夜也說不完,也只知道VBA是建立在Office中的一種應用程序開發工具,其實知道這也就夠了。Excel本身的內置函數其實已經很強大了,甚至有人說,只要學會二三十個函數,就已經可以滿足普通用戶日常的工作需求。
那我們為什么要學VBA?
是的,如果只需要滿足一些普通的工作需求可能永遠也不會用到VBA,但在實際應用的過程中,人們的操作卻越來越大,需要也越來越高,這時候就需要用VBA來對Excel進行二次開發了,VBA可以有效地自定義和擴展Excel的功能。
但有一點想要告訴大家,VBA功能很強大,但并不是萬能的,也并不是所有工作都需要用VBA來解決,也并不是所有工作用VBA來解決都會很簡單,這要根據實際情況而定,有些工作你用VBA來解決的話相反會變得很麻煩。
剛開始的內容聽起來很枯燥,請大家不要分心,耐著性子看下去,興趣總是慢慢積累的。
1、親自動手,錄制一段屬于自己的宏
提到VBA,相信很多人想到的就是宏,但是VBA與宏是不是一回事?我覺得它們不是一回事,但這不重要,我們要做的是先來認識一下宏。
宏是什么?
我理解的宏是一系列固定動作的集合,這個集合當遇到讓他執行的條件后就逐個執行。
有人把我們錄制的宏比喻成一個武術運動員在比賽中練就的一段武術套路動作,這個套路遇到一定的條件(比賽)就執行。
好了,別閑著,動一動你可愛的右手,點點鼠標,打開一個Excel文件,錄制一段宏來來研究研究,步驟如下:
(1)選中任意一個單元格;
(2)打開菜單—>工具—>宏—>錄制新宏,調出宏錄制對話框,輸入宏名(mysub),確定;
(3)設置單元格字體為仿宋體,紅色;
(4)點擊停止錄宏。
這樣,一個簡單的設置單元格格式的宏就錄好了。
-------------------------------------------------------------------------------------------------------------------
2、鼠標點一點,宏給單元格換新裝
下面我們來執行這段宏。
(1)選中需要設置的任意單元格或單元格區域(為了看出效果,單元格最好有字符);
(2)打開菜單—>工具—>宏—>宏,顯示“宏”對話框(快捷鍵:Alt+F8);
(3)選擇我們剛才錄制的宏,單擊“執行”。
這樣我們看到已經為剛才選中的單元格的字體已被修改成仿宋體,紅色。自己動手試著錄制幾段宏,再執行一下,加深印象。
神奇了吧?以后當你再需要一遍又一遍地重復若干相同的操作的時候,會不會想到讓宏來替你做這一切?這是一個不錯的奴隸,不用花錢,且不用開工資,賺了吧?
好了,收起你貪婪的笑容,繼續往下看。
宏是什么?現在相信你能想出一千種說法。
上面說的執行宏的過程是不是讓你感覺很麻煩?希望用快捷鍵來控制宏?這個我們可以在錄制宏之前在錄制宏對話框里進行設置。也可以在錄制宏后進行設置,按Alt+F8顯示宏對話框,單擊“選項”,在“宏選項”對話框里進行設置
--------------------------------------------------------------------------------------------------------------
3、尋根問底,找到宏的老窩
如果你忘記了,請你再打開宏錄制對話框,在宏名的下面,有一個“保存在”的選項,點一點下拉的箭頭,我們可以看到,宏可以保存在三種不同的位置,分別是:
(1)當前工作簿(系統默認):宏保存在當前工作薄的模塊里,只有當該工作薄打開時,宏才起作用。
(2)新工作簿:新建一個工作薄保存。
(3)個人宏工作簿:這是為宏而設計的一種特殊的具有自動隱藏特性的工作簿,如果你要讓某個宏在多個工作簿都能使用,那么就應當創建個人宏工作簿,并將宏保存于其中。
上面我們錄制的宏是保存在當前工作薄里,今天我們在這里也只介紹保存在當前工作表里的宏。
--------------------------------------------------------------------------------------------------------
4、撥開層層迷霧,查看廬山真面目
宏靠什么來控制Excel的運行?是不是感覺深在濃濃的迷霧里,感覺一頭霧水?讓我們鼓一鼓勁,撥開它的衣服,開開那家伙里面到底是什么?
(1)按Alt+F8快捷鍵打開“宏”對話框;
(2)選擇我們剛才錄制的宏,點“編輯”按鈕。
眼前一亮吧?這是一個新的天地——VBA的編輯器窗口(VBE),這個我們以后再說,先將注意力集中到顯示的代碼上。代碼如下:
- Submysub()
- 'mysubMacro
- '宏由ggsmart錄制,時間:2009-2-27'
- WithSelection.Font
- .Name="仿宋_GB2312"
- .Size=12
- .Strikethrough=False
- .Superscript=False
- .Subscript=False
- .OutlineFont=False
- .Shadow=False
- .Underline=xlUnderlineStyleNone
- .ColorIndex=xlAutomatic
- EndWith
- Selection.Font.ColorIndex=3
- EndSub
現在你可能感覺到上面這些亂七八糟的代碼會很陌生,甚至在問自己是不是來到外星人的世界,反正葉楓當初是這樣感覺的,但不要為此感到害怕,將來我們會慢慢熟悉他,就像閉上眼睛也能準確地將那個又大又紅的蘋果送到自己的嘴里。
5、再進一步,給宏安上門鈴
一遍一遍地在宏對話框里選擇宏名稱,按“執行”按鈕來運行宏的麻煩是不是讓你郁悶得有些想吐血?指定快捷鍵雖然方便,但別人用自己的工作表時能不能快速上手?就算是自己,如果宏多了,或是放的時間長了,你還記得哪個快捷鍵控制哪個宏?
作為excel開發者,一個主要的目標是為自動化提供一個易于操作的界面,“按鈕”是最常見的界面組成元素之一,我們可以把宏指定給特定的按鈕,通過按鈕來執行宏,還是用剛才我們錄制的那個宏來舉例。通過使用“窗體”工具欄,可以為工作簿中的工作表添加按鈕。在創建完一個按鈕后,可以為它指定宏,然后你的用戶就可以通過單擊按鈕來執行宏。在本練習中,將創建一個按鈕,并為它指定一個宏,然后用該按鈕來執行宏。具體步驟如下:
(1)打開菜單—>視圖—>工具欄—>窗體,調出窗體工具欄。
(2)單擊”窗體“工具欄中的“按鈕”控件,在工作表中希望放置按鈕的位置按下鼠標左鍵,拖動鼠標畫出一個按鈕,松開鼠標后,Excel會自動顯示“指定宏”對話框。
(3)從“指定宏”對話框中選擇“mysub”,單擊“確定”。這樣,就把該宏指定給命令按鈕。
課間休息,插播一段廣告:按鈕,工作表等這些對象就像是Excel的眾多兒女,兒女太多,怎么稱呼這群兒女也是一個問題.為了不出現叫"兒子"就七八個一起跑出來,同許多農村父母給兒女起"老大,老二,老三……"的稱呼一樣,Excel也用這種順序的起名方法給這些兒女貼上了標簽.比如第一個按鈕是"按鈕一",再畫一個就是"按鈕二",然后是"按鈕三","銨鈕四"等等.這樣,以后你要叫第三個兒子的時候直接叫"按鈕三"即可.如果你嫌這個名字鄉下味太濃,如果你嫌這個名字不能很好地反映點擊它后會執行怎樣的操作不清楚,你可以通過雙擊按鈕表面激活它,可重新為按鈕貼上合適的顯示標簽.需要提醒你的是,這里的標簽只是它顯示在你面前的樣子,實際上它是什么名字?我們可以點擊它,看一下名稱框里是什么.
為什么顯示出來的是一樣,而實際的名字卻是另一樣呢?也許你現在會感到迷茫,但不用管它,以后當我們學習了屬性后,一切就自然明白了.
下面我們來試一試用按鈕操作:
(1)選擇單元格或單元格區域;
(2)單擊按鈕。
按鈕就像裝在樓下的門鈴,美麗的嫦娥仙子家住在502,豬八戒來到樓下,找準號碼502,輕輕一按,“叮咚,叮咚……”,嫦娥在樓上就給八戒開門了,八戒不用在樓下大聲地喊“嫦娥,開門。”也不用花兩毛錢給嫦娥打個電話,當然更不用順著下水管從墻上爬進嫦娥的窗戶,方便而實在吧?
這種遙控式的命令的確能讓繁瑣的操作變得簡單而方便,讓我們獲得了一些使用Excel標準命令所不能實現的功能。如果你是八戒,當你熟悉了如何使用這種遙控一樣的門鈴以后,你可能都會奇怪自己當初在沒有門鈴的情況下,那段漫長的爬下水管道的日子是怎么熬過來的。
讓嫦娥仙子開門的方法有很多種,同樣執行宏也有多種方法可以選擇,我們還可以把宏指定給圖片,自選圖形,這些比較簡單,和指定給窗體按鈕是一樣的,同時我們還可以把宏指定給某個“事件”,比如單擊工作表,雙擊工作表,激活工作表,打開工作簿等等,你要安什么要的門鈴,選什么樣的音樂,隨你了。
需要強調一點的是,我們剛說的“事件”是一個重要的概念,八戒按門鈴,就是一個“事件”,這個“事件”引發了嫦娥的開門,只有門鈴響了,嫦娥才會去開門。除此而外“方法”“對象”“屬性”都是接下來我們會經常接觸到的,慢慢走,留心點,一路上將會精彩不斷。
6、小結
到這里,我們對宏應該有一個簡單的了解了吧?宏實際上就是一個簡單的VBA的Sub過程,它保存在模塊里,以Sub開頭,以EndSub結尾,執行時就從第一句逐句執行,直到EndSub結束。就像前面我們說的武術運動員練的那段套路動作,總是抱拳,扎馬,出拳然后踢腿,永遠不可能沒有扎馬就出拳,沒有出拳就踢腿。我們今天錄的這段宏也總是先設字體,再改字體顏色,這種順序永遠不會亂。
說完這些,你是不是感覺這些操作古板得沒有生氣?是不是感覺這宏的操作不能滿足自己的需求?
想告訴你的是,宏代碼絕不等于VBA,它只是VBA里最簡單的運用,盡管許多Excel過程都可以用錄制宏來完成,但是通過宏代碼還是無法完成許多的工作,如:
(1)不可以建立公式,函數;
(2)沒有判斷或循環的功能;
(3)不能進行人機交互;
(4)無法顯示用戶窗體;
(5)無法與其他軟件或文件進行互動。
…….
所以,你看了上面的內容后千萬不要以為宏就是VBA了,更不要以為自己已經會VBA了,事實上是你才剛沾上VBA的邊,或者說連邊都沒沾上,甚至連宏今天我們都只是作了簡單的介紹。
路漫漫其修遠兮,還等著我們上下去求索,路在腳下,武林高手總是從練習簡單的套路動作開始,不要厭倦扎馬的單調,靜下心多練練,這會是你以后練習武功招式的一個基礎,孔子老人家說了,要溫故而知新,記得復習鞏固,不要學了后面忘了前面,到下次再見到你的時候你什么都忘記了,好了,今天就到這里,讓我們一起加油~~~~