excel編程系列基礎:認識VBA的編輯器VBE

編按:哈嘍,大家好!VBA實戰(zhàn)入門教程第5篇,我們將從九九乘法表開始和結(jié)束今天的教程。之中,我們會認識VBE,也就是VBA代碼的編輯器。VBE的基本概念、打開方式,以及它的布局和主要功能,它們很簡單,但我們需要掌握。你可以認為這篇教程是我們繼續(xù)學習VBA前的一次快樂休閑。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
【前言】
作者E圖表述在“部落窩”也寫了不少VBA的文章了,并且現(xiàn)在依然保持更新,還是那句話:在操作函數(shù)、數(shù)透、圖表、VBA這幾大EXCEL模塊中,唯獨VBA是一定要按部就班、循序漸進的學習。通過前幾篇內(nèi)容,我相信你一定已經(jīng)開始嘗試自己寫一些內(nèi)容了,是的,當你知道了操作單元格+循環(huán)+判斷,那么再加上思考,就一定可以寫一些案例操作了。
你說什么?還沒做過,哎~,“懶癌”是病,這個作者E圖表述可治不了,你得自己治。
【正文】
好了,既然你沒練過,那么我們開篇就先來一道練習題,測一下同學們的掌握程度吧。當然了有興趣的同學都可以來做一下,題目很簡單,“九九乘法表”。我繼續(xù)講今天的內(nèi)容,文末會公布答案。

● 10年前,作者初學VBA的時候,總是能看到“九九乘法表”的練習,但是不知道為什么,現(xiàn)在很多教程都沒有這個,它對于循環(huán)+判斷邏輯關系的理解是相當有意義的。
一、認識VBE
我們常說的VBA,其實是Visual Basic for Application(用于應用程序的?visual basic)的簡寫;而VBE的全稱是Visual Basic Editor,是VBA的容器,用于存放VBA。我們編寫代碼的過程,就像人與計算機說話(下達指令),只有計算機能夠“聽懂我們說的話”,才能執(zhí)行我們給它下達的指令,那么VBE就承載了這個“編譯”的過程,所以我們可以理解為VBE就是Excel中VBA的編譯器。
其實所有的計算機語言,如JAVA、Python都有自己的編譯器,就像一個翻譯員一樣,將我們指定的命令代碼,讓計算機能夠看懂,能夠執(zhí)行。
二、打開VBE的三種方式
1.在功能區(qū)的“開發(fā)工具”中打開VBE界面
很多同學的Excel功能區(qū)中都是沒有“開發(fā)工具”選項的,我們可以通過“選項”中的“自定義功能區(qū)”,調(diào)用出這個功能。

然后選擇“開發(fā)工具”——Visual Basic功能鍵,就可以打開VBE界面。

2.在工作表標簽上單擊鼠標右鍵,打開菜單欄

在彈出的菜單中,選擇“查看代碼”,也可以打開VBE界面。
3.ALT+F11組合鍵打開
這是最常用的一種打開VBE界面的方式。
注意:無論你使用何種方式打開VBE界面,都要記得,要打開某個工作薄之后,才可以使用VBE,畢竟EXCEL文件才是VBE的載體。
三、熟悉VBE界面的布局和初步調(diào)試
我們以任何一種方式打開VBE界面后,結(jié)構(gòu)如下:

當然,你打開的VBE界面肯定不是這個樣子的,如果你也想調(diào)出這些窗口,就讓我們先從菜單欄開始介紹VBE界面的主要功能吧。
1.菜單欄
菜單欄包含了絕大部分的VBE界面的操作,信息量也比較大,我們主要從以下幾方面介紹一下:
1)調(diào)出窗口:點擊工具欄——視圖,里面就能顯示出所有的窗口。

2)代碼調(diào)試:點擊菜單欄——調(diào)試,可以看到日常編寫VBA代碼后,如果要調(diào)試代碼的運行,我們就需要使用這里的調(diào)試功能,作者E圖表述平時使用的是“逐語句”和“切換斷點”,而在菜單欄的二級菜單中也顯示了對應的快捷鍵:F8和F9。

3)對于VBE的設置,我們可以在菜單欄的工具菜單中,通過“選項”里面的“編輯器格式”功能,對你的VBE操作界面設置個性化的版面;也可以通過“VBAProject屬性”中的“保護”功能,對你寫過的代碼進行加密保護。

以上是菜單欄的一些常用內(nèi)容。
2.工具欄
工具欄中的功能,是微軟為了用戶使用方便,將菜單欄中的一些常用操作圖表羅列出來,制成快速按鍵而已,我們首先看看工具欄的調(diào)用。
當你初次使用VBE的時候,默認情況一般只有“標準”工具欄,我們可以在工具欄的右側(cè)空白處,點擊鼠標右鍵,在彈出的菜單中選擇需要的工具欄“挑勾”,然后拖拽到你需要的位置即可,如下演示:

在這么多的工具欄中,同學們也沒有必要把時間都花費在研究功能上,作者給大家列出幾個比較常用的吧,如下:

1)保存,Ctrl+S快捷鍵;
2)撤回,Ctrl+Z和Ctrl+Y快捷鍵;
3)運行過程。寫出一段代碼后,可以點此運行代碼查看結(jié)果或調(diào)試,快捷鍵是F5;
4)縮進。就像Word一樣,代碼都是有層級的,我們以前發(fā)出的代碼,一般都是需要體現(xiàn)出代碼的層級,比如少了“結(jié)束語句”的時候,可以快速查詢糾錯。一般作者都是點兩下空格作為縮進,也可以使用Tab鍵縮進,縮進的長度可以在選項中設置;

5)注釋塊。相當于工作表中的批注,起到說明備忘的效果。如果我們編寫了一段比較復雜的代碼,時間一長,有可能忘記了代碼設置的思路,所以注釋塊可以起到幫助我們回憶的作用。更快捷輸入的方式是在需要添加注釋的字符串前,直接加一個英文狀態(tài)下的單引號即可。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
3.工程資源管理器
這是存放對象的容器,默認情況下,包含了Sheet對象、ThisWorkbook對象,我們還可以在這里添加“窗體”“模塊”和“類模塊”對象,添加方式如下:

4.屬性窗口
如果要學習VBA,那么同學們一定要有一個思想準備,VBA對象的屬性雖不是多如牛毛,但卻很少有人能記住所有的屬性,甚至十分之一都記不住。這里我們可以對選定的對象進行一些常規(guī)的格式上的設置,例如對下面某個工作表的設置:

這個設置如果寫成VBA代碼,則如下:
Sub?代碼1()
? With Sheets(3)
??? .Name = "工作表1"
??? .Visible = 0
? End With
End Sub
發(fā)現(xiàn)沒有,代碼中的NAME和VISIBLE屬性,和剛才在屬性窗口中設置的是同樣的寫法,是不是對學習對象屬性很有幫助。
5.代碼窗口
這個窗口是承載所有代碼編寫的地方,選擇不同的對象,那么這個代碼就是針對這個對象的代碼窗。
6.對象和過程窗口
這兩個窗口又是一個重要的內(nèi)容,不知道同學們有沒有聽說過“VBA事件”,就是在這里選擇的,例如選擇工作表對象后,如下:

又如選擇了窗體對象后,雙擊窗體區(qū)域,或者鼠標右鍵——查看代碼,都可以調(diào)出窗體的代碼窗口,如下:

7.立即窗口
這個窗口,作者E圖表述很少使用。它的作用是顯示代碼運行的結(jié)果(我們調(diào)試代碼的時候,就在工作表或者窗體中點擊運行就好了),需要DEBUG.PRINT代碼輔助,如下:
Sub jiafa()
? a = 1 + 2
? Debug.Print a
End Sub

8.本地窗口
本地窗口,是作者一直都會打開的窗口。這個窗口對于“逐語句F8”調(diào)試代碼是相當重要的,如下代碼演示:

我們連著按F8,就可以看到代碼在逐行運行,并且本地窗口中,對變量的變化給出了相當明顯的標記,便于我們調(diào)試代碼。(另:這個本地窗口對于我們了解代碼的運行規(guī)律也是相當有幫助的。)
9.監(jiān)視窗口
和本地窗口的用途差不多,不過我們使用監(jiān)視窗口前,需要添加被監(jiān)視的變量表達式,如下:

以上就是同學們能看到的VBE主要界面上的窗口和菜單工具欄,作者E圖表述想告訴大家:沒事兒隨便點一點,EXCEL不嬌氣,沒那么容易被你“點壞”的。
四、窗體、模塊、類模塊的意義
剛才我們在資源工程管理器中,用鼠標右鍵插入了窗體、模塊、類模塊三個內(nèi)容,它們在EXCEL VBA中有著相當重要的作用,是同學們走向自動化辦公的必經(jīng)之路。
我們通過本講簡單的了解一下它們的意義,以后我們都會有專門的篇章去學習。
1.窗體
承載窗體、控件的載體,我們有的時候使用工具欄的內(nèi)容,就會彈出一些窗體,比如我們上面講到的菜單欄——工具——選項窗體,在窗體對象的代碼窗口中寫下代碼,那么我們就可以自己DIY一個交互式操作界面,是不是很酷,想想都興奮的想操作??!
2.模塊
模塊是使用最多的一個環(huán)節(jié)。其他的對象只能在本身對應的代碼窗口中調(diào)用代碼語句,可是在模塊中寫入的代碼,卻可以被其他對象引用。工作表對象的代碼、工作薄對象的代碼、窗體代碼、控件代碼、模塊與模塊之間,都可以使用CALL語句調(diào)用模塊中的代碼。
另外,在模塊中使用FUNCTION函數(shù)過程,還可以寫出“自定義函數(shù)”,如果你的EXCEL版本低,用不了XLOOKUP、MAXIFS、TEXTJOIN這類函數(shù),可以用FUNCTION函數(shù)過程自己寫出代碼,和使用工作表函數(shù)一樣方便。
3.類模塊
類模塊是自定義類的屬性和方法的模塊。使用VBA編寫的過程就是操作對象屬性和方法的過程,而類模塊是自定義這一過程的方式,我們在代碼中看到的PUBLIC PROPERTY過程,就屬于類模塊。它通常用于應用程序級別的事件中,慢慢來,跟著學,終會遇到。
【編后語】
本章的信息量很大,但是作者還是覺得有必要讓同學們了解自己正在學習的這個VBE平臺“到底長什么樣子以及其意義”,學習不能盲目,我們要走最近的路,但不能盲目的走下去,所以就有了此篇教程。如果對你有所幫助,留言告訴我,然后“分享”“在看”一波走起。
最后給出開篇《九九乘法表》的答案,記得多練習?。。?!順便看看代碼的層級縮進!
Sub?九九乘法表()
? With Sheets("九九乘法表")
??? For i = 1 To 9
????? For j = 1 To 9
??????? If i >= j Then
??????????? .Cells(i, j) = j & "*" & i & "=" & j * i
??????? End If
????? Next j
??? Next i
? End With
End Sub
好了,今天就分享到這兒了。學習更多技巧,請收藏關注部落窩教育excel圖文教程。
本文配套的練習課件請加入QQ群:1043683754下載。
****部落窩教育-VBA的編輯器VBE****
原創(chuàng):E圖表述/部落窩教育(未經(jīng)同意,請勿轉(zhuǎn)載)
更多教程:部落窩教育(http://www.itblw.com)
微信公眾號:exceljiaocheng,+v:blwjymx2