愛伊米

菜鳥談VBA最最基礎入門(一)

如果你是學習Excel的朋友,對VBA這個概念不陌生吧?

VBA的功能實在太強大,可初學的我們,面對那一串串尤如外星文的程式碼,你是不是看得頭昏腦脹?

想學,是不是卻茫然得找不到入口?在這裡,我把我自己的學習心得和筆記放出來,和大家一起分享交流,一起學習,共同進步。

對了,還要告訴大家,我也是初學者,不是高手,如果有什麼說得不對的,希望大家及時指出。

我的目的不是教學,而是期望創造一個有你,有我,有他的學習氛圍! 開始吧,記住一個共同的目標——掀開那層神秘的面紗,看看VBA的真實面目。

什麼是VBA?為什麼要學習VBA?

VBA是Visual Basic For Application的簡稱,具體說來,可能讓葉楓三天三夜也說不完,葉楓也只知道VBA是建立在Office中的一種應用程式開發工具,其實知道這也就夠了。很懶很笨的葉楓只想吃香噴噴的大米飯,可從沒想要知道大米飯是怎麼來的。Excel本身的內建函式其實已經很強大了,甚至有人說,只要學會二三十個函式,就已經可以滿足普通使用者日常的工作需求。那我們為什麼要學VBA?是的,如果只需要滿足一些普通的工作需求可能永遠也不會用到VBA,但在實際應用的過程中,人們的操作卻越來越大,需要也越來越高,這時候就需要用VBA來對Excel進行二次開發了,VBA可以有效地自定義和擴充套件Excel的功能。但有一點葉楓想要告訴大家,VBA功能很強大,但並不是萬能的,也並不是所有工作都需要用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),這個我們以後再說,先將注意力集中到顯示的程式碼上。程式碼如下:

Sub mysub()

‘mysub Macro

’宏由ggsmart錄製,時間: 2016-10-19‘

With Selection。Font

。Name = ’仿宋_GB2312‘

。Size = 12

。Strikethrough = False

。Superscript = False

。Subscript = False

。OutlineFont = False

。Shadow = False

。Underline = xlUnderlineStyleNone

。ColorIndex = xlAutomatic

End With

Selection。Font。ColorIndex = 3

End Sub

現在你可能感覺到上面這些亂七八糟的程式碼會很陌生,甚至在問自己是不是來到外星人的世界,反正葉楓當初是這樣感覺的,但不要為此感到害怕,將來我們會慢慢熟悉他,就像閉上眼睛也能準確地將那個又大又紅的蘋果送到自己的嘴裡。

5、再進一步,給宏安上門鈴

一遍一遍地在宏對話方塊裡選擇宏名稱,按“執行”按鈕來執行宏的麻煩是不是讓你鬱悶得有些想吐血?指定快捷鍵雖然方便,但別人用自己的工作表時能不能快速上手?

就算是自己,如果宏多了,或是放的時間長了,你還記得哪個快捷鍵控制哪個宏?作為excel開發者,一個主要的目標是為自動化提供一個易於操作的介面,“按鈕”是最常見的介面組成元素之一,我們可以把宏指定給特定的按鈕,透過按鈕來執行宏,還是用剛才我們錄製的那個宏來舉例。透過使用“窗體”工具欄,可以為工作簿中的工作表新增按鈕。在建立完一個按鈕後,可以為它指定宏,然後你的使用者就可以透過單擊按鈕來執行宏。在本練習中,將建立一個按鈕,併為它指定一個宏,然後用該按鈕來執行宏。

具體步驟如下(Excel2003為例):(1)開啟選單->檢視->工具欄->窗體,調出窗體工具欄。

(2)單擊”窗體“工具欄中的“按鈕”控制元件,在工作表中希望放置按鈕的位置按下滑鼠左鍵,拖動滑鼠畫出一個按鈕,鬆開滑鼠後,Excel會自動顯示“指定宏”對話方塊。

(3)從“指定宏”對話方塊中選擇“mysub”,單擊“確定”。

這樣,就把該宏指定給命令按鈕。

課間休息:

按鈕,工作表等這些物件就像是Excel的眾多兒女,兒女太多,怎麼稱呼這群兒女也是一個問題。

為了不出現叫“兒子”就七八個一起跑出來,同許多農村父母給兒女起“老大,老二,老三……”的稱呼一樣,Excel也用這種順序的起名方法給這些兒女貼上了標籤:

比如第一個按鈕是“按鈕一”,再畫一個就是“按鈕二”,然後是“按鈕三”,“銨鈕四”等等。這樣,以後你要叫第三個兒子的時候直接叫“按鈕三”即可。

如果你嫌這個名字鄉下味太濃,如果你嫌這個名字不能很好地反映點選它後會執行怎樣的操作不清楚,你可以透過雙擊按鈕表面啟用它,可重新為按鈕貼上合適的顯示標籤。

需要提醒你的是,這裡的標籤只是它顯示在你面前的樣子,實際上它是什麼名字?我們可以點選它,看一下名稱框裡是什麼。

為什麼顯示出來的是一樣,而實際的名字卻是另一樣呢?

也許你現在會感到迷茫,但不用管它,以後當我們學習了屬性後,一切就自然明白了。下面我們來試一試用按鈕操作:(1)選擇單元格或單元格區域;(2)單擊按鈕。

按鈕就像裝在樓下的門鈴,美麗的嫦娥仙子家住在502,豬八戒來到樓下,找準號碼502,輕輕一按,“叮咚,叮咚……”,嫦娥在樓上就給八戒開門了,八戒不用在樓下大聲地喊“嫦娥,開門。”

也不用花兩毛錢給嫦娥打個電話,當然更不用順著下水管從牆上爬進嫦娥的窗戶,方便而實在吧?

這種遙控式的命令的確能讓繁瑣的操作變得簡單而方便,讓我們獲得了一些使用Excel標準命令所不能實現的功能。

如果你是八戒,當你熟悉瞭如何使用這種遙控一樣的門鈴以後,你可能都會奇怪自己當初在沒有門鈴的情況下,那段漫長的爬下水管道的日子是怎麼熬過來的。讓嫦娥仙子開門的方法有很多種,同樣執行宏也有多種方法可以選擇,我們還可以把宏指定給圖片,自選圖形,這些比較簡單,和指定給窗體按鈕是一樣的,同時我們還可以把宏指定給某個“事件”,比如單擊工作表,雙擊工作表,啟用工作表,開啟工作簿等等,你要安什麼要的門鈴,選什麼樣的音樂,隨你了。

需要強調一點的是,我們剛說的“事件”是一個重要的概念,八戒按門鈴,就是一個“事件”,這個“事件”引發了嫦娥的開門,只有門鈴響了,嫦娥才會去開門。除此而外“方法”“物件”“屬性”都是接下來我們會經常接觸到的,慢慢走,留心點,一路上將會精彩不斷。6、小結到這裡,我們對宏應該有一個簡單的瞭解了吧?

宏實際上就是一個簡單的VBA的Sub過程,它儲存在模組裡,以Sub開頭,以End Sub結尾,執行時就從第一句逐句執行,直到End Sub結束。

就像前面我們說的武術運動員練的那段套路動作,總是抱拳,扎馬,出拳然後踢腿,永遠不可能沒有扎馬就出拳,沒有出拳就踢腿。

我們今天錄的這段宏也總是先設字型,再改字型顏色,這種順序永遠不會亂。

說完這些,你是不是感覺這些操作古板得沒有生氣?是不是感覺這宏的操作不能滿足自己的需求?葉楓想告訴你的是,宏程式碼絕不等於VBA,它只是VBA裡最簡單的運用,儘管許多Excel過程都可以用錄製宏來完成,但是透過宏程式碼還是無法完成許多的工作,如:(1)不可以建立公式,函式;(2)沒有判斷或迴圈的功能;(3)不能進行人機互動;(4)無法顯示使用者窗體;(5)無法與其他軟體或檔案進行互動。……。所以,你看了上面的內容後千萬不要以為宏就是VBA了,更不要以為自己已經會VBA了,事實上是你才剛沾上VBA的邊,或者說連邊都沒沾上,甚至連宏今天我們都只是作了簡單的介紹。路漫漫其修遠兮,還等著我們上下去求索,路在腳下,武林高手總是從練習簡單的套路動作開始,不要厭倦扎馬的單調,靜下心多練練,這會是你以後練習武功招式的一個基礎。

孔子老人家說了,要溫故而知新,記得複習鞏固,不要學了後面忘了前面,到下次葉楓再見到你的時候你什麼都忘記了。

好了,今天就到這裡,讓我們一起加油~~~~

作者:葉楓