編按:哈嘍,大家好!VBA實(shí)戰(zhàn)入門教程第5篇,我們將從九九乘法表開始和結(jié)束今天的教程。之中,我們會(huì)認(rèn)識(shí)VBE,也就是VBA代碼的編輯器。VBE的基本概念、打開方式,以及它的布局和主要功能,它們很簡單,但我們需要掌握。你可以認(rèn)為這篇教程是我們繼續(xù)學(xué)習(xí)VBA前的一次快樂休閑。
【前言】
作者E圖表述在“部落窩”也寫了不少VBA的文章了,并且現(xiàn)在依然保持更新,還是那句話:在操作函數(shù)、數(shù)透、圖表、VBA這幾大EXCEL模塊中,唯獨(dú)VBA是一定要按部就班、循序漸進(jìn)的學(xué)習(xí)。通過前幾篇內(nèi)容,我相信你一定已經(jīng)開始嘗試自己寫一些內(nèi)容了,是的,當(dāng)你知道了操作單元格+循環(huán)+判斷,那么再加上思考,就一定可以寫一些案例操作了。
你說什么?還沒做過,哎~,“懶癌”是病,這個(gè)作者E圖表述可治不了,你得自己治。
【正文】
好了,既然你沒練過,那么我們開篇就先來一道練習(xí)題,測一下同學(xué)們的掌握程度吧。當(dāng)然了有興趣的同學(xué)都可以來做一下,題目很簡單,“九九乘法表”。我繼續(xù)講今天的內(nèi)容,文末會(huì)公布答案。
● 10年前,作者初學(xué)VBA的時(shí)候,總是能看到“九九乘法表”的練習(xí),但是不知道為什么,現(xiàn)在很多教程都沒有這個(gè),它對于循環(huán)+判斷邏輯關(guān)系的理解是相當(dāng)有意義的。
一、認(rèn)識(shí)VBE
我們常說的VBA,其實(shí)是Visual Basic for Application(用于應(yīng)用程序的 visual basic)的簡寫;而VBE的全稱是Visual Basic Editor,是VBA的容器,用于存放VBA。我們編寫代碼的過程,就像人與計(jì)算機(jī)說話(下達(dá)指令),只有計(jì)算機(jī)能夠“聽懂我們說的話”,才能執(zhí)行我們給它下達(dá)的指令,那么VBE就承載了這個(gè)“編譯”的過程,所以我們可以理解為VBE就是Excel中VBA的編譯器。
其實(shí)所有的計(jì)算機(jī)語言,如JAVA、Python都有自己的編譯器,就像一個(gè)翻譯員一樣,將我們指定的命令代碼,讓計(jì)算機(jī)能夠看懂,能夠執(zhí)行。
二、打開VBE的三種方式
1.在功能區(qū)的“開發(fā)工具”中打開VBE界面
很多同學(xué)的Excel功能區(qū)中都是沒有“開發(fā)工具”選項(xiàng)的,我們可以通過“選項(xiàng)”中的“自定義功能區(qū)”,調(diào)用出這個(gè)功能。
然后選擇“開發(fā)工具”——Visual Basic功能鍵,就可以打開VBE界面。
2.在工作表標(biāo)簽上單擊鼠標(biāo)右鍵,打開菜單欄
在彈出的菜單中,選擇“查看代碼”,也可以打開VBE界面。
3.ALT+F11組合鍵打開
這是最常用的一種打開VBE界面的方式。
注意:無論你使用何種方式打開VBE界面,都要記得,要打開某個(gè)工作薄之后,才可以使用VBE,畢竟EXCEL文件才是VBE的載體。
三、熟悉VBE界面的布局和初步調(diào)試
我們以任何一種方式打開VBE界面后,結(jié)構(gòu)如下:
當(dāng)然,你打開的VBE界面肯定不是這個(gè)樣子的,如果你也想調(diào)出這些窗口,就讓我們先從菜單欄開始介紹VBE界面的主要功能吧。
1.菜單欄
菜單欄包含了絕大部分的VBE界面的操作,信息量也比較大,我們主要從以下幾方面介紹一下:
1)調(diào)出窗口:點(diǎn)擊工具欄——視圖,里面就能顯示出所有的窗口。
2)代碼調(diào)試:點(diǎn)擊菜單欄——調(diào)試,可以看到日常編寫VBA代碼后,如果要調(diào)試代碼的運(yùn)行,我們就需要使用這里的調(diào)試功能,作者E圖表述平時(shí)使用的是“逐語句”和“切換斷點(diǎn)”,而在菜單欄的二級(jí)菜單中也顯示了對應(yīng)的快捷鍵:F8和F9。
3)對于VBE的設(shè)置,我們可以在菜單欄的工具菜單中,通過“選項(xiàng)”里面的“編輯器格式”功能,對你的VBE操作界面設(shè)置個(gè)性化的版面;也可以通過“VBAProject屬性”中的“保護(hù)”功能,對你寫過的代碼進(jìn)行加密保護(hù)。
以上是菜單欄的一些常用內(nèi)容。
2.工具欄
工具欄中的功能,是微軟為了用戶使用方便,將菜單欄中的一些常用操作圖表羅列出來,制成快速按鍵而已,我們首先看看工具欄的調(diào)用。
當(dāng)你初次使用VBE的時(shí)候,默認(rèn)情況一般只有“標(biāo)準(zhǔn)”工具欄,我們可以在工具欄的右側(cè)空白處,點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇需要的工具欄“挑勾”,然后拖拽到你需要的位置即可,如下演示:
在這么多的工具欄中,同學(xué)們也沒有必要把時(shí)間都花費(fèi)在研究功能上,作者給大家列出幾個(gè)比較常用的吧,如下:
1)保存,Ctrl+S快捷鍵;
2)撤回,Ctrl+Z和Ctrl+Y快捷鍵;
3)運(yùn)行過程。寫出一段代碼后,可以點(diǎn)此運(yùn)行代碼查看結(jié)果或調(diào)試,快捷鍵是F5;
4)縮進(jìn)。就像Word一樣,代碼都是有層級(jí)的,我們以前發(fā)出的代碼,一般都是需要體現(xiàn)出代碼的層級(jí),比如少了“結(jié)束語句”的時(shí)候,可以快速查詢糾錯(cuò)。一般作者都是點(diǎn)兩下空格作為縮進(jìn),也可以使用Tab鍵縮進(jìn),縮進(jìn)的長度可以在選項(xiàng)中設(shè)置;
5)注釋塊。相當(dāng)于工作表中的批注,起到說明備忘的效果。如果我們編寫了一段比較復(fù)雜的代碼,時(shí)間一長,有可能忘記了代碼設(shè)置的思路,所以注釋塊可以起到幫助我們回憶的作用。更快捷輸入的方式是在需要添加注釋的字符串前,直接加一個(gè)英文狀態(tài)下的單引號(hào)即可。
3.工程資源管理器
這是存放對象的容器,默認(rèn)情況下,包含了Sheet對象、ThisWorkbook對象,我們還可以在這里添加“窗體”“模塊”和“類模塊”對象,添加方式如下:
4.屬性窗口
如果要學(xué)習(xí)VBA,那么同學(xué)們一定要有一個(gè)思想準(zhǔn)備,VBA對象的屬性雖不是多如牛毛,但卻很少有人能記住所有的屬性,甚至十分之一都記不住。這里我們可以對選定的對象進(jìn)行一些常規(guī)的格式上的設(shè)置,例如對下面某個(gè)工作表的設(shè)置:
這個(gè)設(shè)置如果寫成VBA代碼,則如下:
Sub 代碼1()
With Sheets(3)
.Name = "工作表1"
.Visible = 0
End With
End Sub
發(fā)現(xiàn)沒有,代碼中的NAME和VISIBLE屬性,和剛才在屬性窗口中設(shè)置的是同樣的寫法,是不是對學(xué)習(xí)對象屬性很有幫助。
5.代碼窗口
這個(gè)窗口是承載所有代碼編寫的地方,選擇不同的對象,那么這個(gè)代碼就是針對這個(gè)對象的代碼窗。
6.對象和過程窗口
這兩個(gè)窗口又是一個(gè)重要的內(nèi)容,不知道同學(xué)們有沒有聽說過“VBA事件”,就是在這里選擇的,例如選擇工作表對象后,如下:
又如選擇了窗體對象后,雙擊窗體區(qū)域,或者鼠標(biāo)右鍵——查看代碼,都可以調(diào)出窗體的代碼窗口,如下:
7.立即窗口
這個(gè)窗口,作者E圖表述很少使用。它的作用是顯示代碼運(yùn)行的結(jié)果(我們調(diào)試代碼的時(shí)候,就在工作表或者窗體中點(diǎn)擊運(yùn)行就好了),需要DEBUG.PRINT代碼輔助,如下:
Sub jiafa()
a = 1 + 2
Debug.Print a
End Sub
8.本地窗口
本地窗口,是作者一直都會(huì)打開的窗口。這個(gè)窗口對于“逐語句F8”調(diào)試代碼是相當(dāng)重要的,如下代碼演示:
我們連著按F8,就可以看到代碼在逐行運(yùn)行,并且本地窗口中,對變量的變化給出了相當(dāng)明顯的標(biāo)記,便于我們調(diào)試代碼。(另:這個(gè)本地窗口對于我們了解代碼的運(yùn)行規(guī)律也是相當(dāng)有幫助的。)
9.監(jiān)視窗口
和本地窗口的用途差不多,不過我們使用監(jiān)視窗口前,需要添加被監(jiān)視的變量表達(dá)式,如下:
以上就是同學(xué)們能看到的VBE主要界面上的窗口和菜單工具欄,作者E圖表述想告訴大家:沒事兒隨便點(diǎn)一點(diǎn),EXCEL不嬌氣,沒那么容易被你“點(diǎn)壞”的。
四、窗體、模塊、類模塊的意義
剛才我們在資源工程管理器中,用鼠標(biāo)右鍵插入了窗體、模塊、類模塊三個(gè)內(nèi)容,它們在EXCEL VBA中有著相當(dāng)重要的作用,是同學(xué)們走向自動(dòng)化辦公的必經(jīng)之路。
我們通過本講簡單的了解一下它們的意義,以后我們都會(huì)有專門的篇章去學(xué)習(xí)。
1.窗體
承載窗體、控件的載體,我們有的時(shí)候使用工具欄的內(nèi)容,就會(huì)彈出一些窗體,比如我們上面講到的菜單欄——工具——選項(xiàng)窗體,在窗體對象的代碼窗口中寫下代碼,那么我們就可以自己DIY一個(gè)交互式操作界面,是不是很酷,想想都興奮的想操作??!
2.模塊
模塊是使用最多的一個(gè)環(huán)節(jié)。其他的對象只能在本身對應(yīng)的代碼窗口中調(diào)用代碼語句,可是在模塊中寫入的代碼,卻可以被其他對象引用。工作表對象的代碼、工作薄對象的代碼、窗體代碼、控件代碼、模塊與模塊之間,都可以使用CALL語句調(diào)用模塊中的代碼。
另外,在模塊中使用FUNCTION函數(shù)過程,還可以寫出“自定義函數(shù)”,如果你的EXCEL版本低,用不了XLOOKUP、MAXIFS、TEXTJOIN這類函數(shù),可以用FUNCTION函數(shù)過程自己寫出代碼,和使用工作表函數(shù)一樣方便。
3.類模塊
類模塊是自定義類的屬性和方法的模塊。使用VBA編寫的過程就是操作對象屬性和方法的過程,而類模塊是自定義這一過程的方式,我們在代碼中看到的PUBLIC PROPERTY過程,就屬于類模塊。它通常用于應(yīng)用程序級(jí)別的事件中,慢慢來,跟著學(xué),終會(huì)遇到。
【編后語】
本章的信息量很大,但是作者還是覺得有必要讓同學(xué)們了解自己正在學(xué)習(xí)的這個(gè)VBE平臺(tái)“到底長什么樣子以及其意義”,學(xué)習(xí)不能盲目,我們要走最近的路,但不能盲目的走下去,所以就有了此篇教程。如果對你有所幫助,留言告訴我,然后“分享”“在看”一波走起。
最后給出開篇《九九乘法表》的答案,記得多練習(xí)?。。。№槺憧纯创a的層級(jí)縮進(jìn)!
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
好了,今天就分享到這兒了。
****部落窩教育-VBA的編輯器VBE****
原創(chuàng):E圖表述/部落窩教育(未經(jīng)同意,請勿轉(zhuǎn)載)
微信公眾號(hào):exceljiaocheng,+v:blwjymx2
聯(lián)系客服