網(wǎng)站首頁(yè) 行業(yè)快訊 > 正文
模塊代碼(標(biāo)準(zhǔn)模塊代碼)
大家好,最近推出的內(nèi)容是"VBA信息獲取與處理"中的部分內(nèi)容,這套教程面向中高級(jí)人員,涉及范圍更廣,實(shí)用性更強(qiáng),現(xiàn)在的內(nèi)容是第三個(gè)專題"VBA代碼的分類及如何利用代碼自動(dòng)關(guān)閉空閑文件"的內(nèi)容。
大家好,我們這講開始一個(gè)新的專題,這個(gè)專題中我們首先講解一下VBA代碼應(yīng)用的模塊(module),然后介紹給大家如何利用VBA代碼實(shí)現(xiàn)已經(jīng)打開文件的自動(dòng)關(guān)閉。
我們要知道,模塊是代碼的容器。所有代碼必須寫在模塊中才能執(zhí)行。可以將模塊看做為一個(gè)文件,實(shí)際上,我們確實(shí)可以將模塊導(dǎo)出為一個(gè)文本文件。在一個(gè)模塊中,可以包含幾個(gè)過(guò)程。對(duì)于一個(gè)小的工程,可以將所有代碼放在一個(gè)模塊中。而對(duì)于大的、復(fù)雜的項(xiàng)目,可以將代碼寫在幾個(gè)模塊中,以利于組織和修改。在執(zhí)行代碼時(shí),過(guò)程在哪個(gè)模塊中并不重要。來(lái)自一個(gè)模塊的代碼可以調(diào)用同一項(xiàng)目中任何其他模塊中的代碼(注意所調(diào)用的過(guò)程作用域不是私有的Private)。
另外,我們也可以將一個(gè)模塊文件,其文件名擴(kuò)展名為bas,類模塊文件,其文件名擴(kuò)展名為cls或frm(用于用戶窗體)通過(guò)從VBA編輯器的"文件"菜單中選擇"導(dǎo)入"項(xiàng),將該模塊導(dǎo)入到項(xiàng)目中。那么在VBA中代碼又是如何進(jìn)行分類呢?一般來(lái)講,按模塊分,代碼的可以有四種類型:標(biāo)準(zhǔn)模塊代碼;工作簿和工作表模塊代碼;用戶窗體模塊代碼;類模塊代碼,這個(gè)專題我將主要給大家介紹標(biāo)準(zhǔn)模塊代碼,工作簿和工作表模塊代碼的知識(shí).對(duì)于窗體模塊涉及到的內(nèi)容類似于上述兩個(gè)部分不再講解,對(duì)于類模塊大家可以參考我的專門教程"VBA中類模塊的解讀及應(yīng)用"。
第一節(jié) 標(biāo)準(zhǔn)模塊代碼(Standard Code Modules)標(biāo)準(zhǔn)代碼模塊,是放置大部分VBA代碼的地方。對(duì)于新手程序員,所有代碼都會(huì)將在標(biāo)準(zhǔn)模塊中。我們實(shí)現(xiàn)的絕大多數(shù)的功能也是在標(biāo)準(zhǔn)模塊代碼中完成的。這講的內(nèi)容就是給大家講解標(biāo)準(zhǔn)模塊代碼。
1 標(biāo)準(zhǔn)模塊代碼的組成一個(gè)標(biāo)準(zhǔn)模塊代碼一般包含三個(gè)部分。第一個(gè)是編譯器指令部分,位于模塊的最頂部,它包含諸如Option Explicit和Option Compare Text之類的指令。但這些指令不是必需的,你可以根據(jù)自己的習(xí)慣在需要的時(shí)候使用它們。第二部分稱為聲明部分,可以聲明了模塊級(jí)或過(guò)程級(jí)范圍的變量。這些變量可以由模塊中的任何過(guò)程訪問(wèn),并且即使在執(zhí)行了一個(gè)過(guò)程或一組過(guò)程并修改了其值之后,這些變量仍保留其值。聲明部分也可以包含聲明引用函數(shù)。這些函數(shù)定義通常指向構(gòu)成Windows操作系統(tǒng)的各種DLL文件中的函數(shù)。這些語(yǔ)句Sub、Function或Property過(guò)程之前。第三部分是模塊中包含的實(shí)際代碼。代碼部分包含執(zhí)行實(shí)際工作的所有代碼。
上面的代碼是本專題將利用的代碼,這段代碼沒(méi)有包含上面講解的第一部分,沒(méi)有設(shè)置強(qiáng)制變量的聲明及比較的模式等等,但包含上面講解的第二部分,這部分聲明了一個(gè)正常的Public變量: RunWhen,這個(gè)變量是在整個(gè)工程中有效的。還聲明了一個(gè)常數(shù)的NUM_MINUTES,這個(gè)常數(shù)的意義就是我們將要經(jīng)過(guò)多長(zhǎng)時(shí)間讓這個(gè)文件自動(dòng)關(guān)閉。在上面的SUB過(guò)程就是我們前面提到的第三部分過(guò)程代碼。
2 標(biāo)準(zhǔn)模塊代碼中的過(guò)程分類過(guò)程是可以作為一個(gè)單元執(zhí)行的代碼塊。所有代碼必須屬于一個(gè)過(guò)程。代碼不能存在于過(guò)程之外。雖然單個(gè)模塊可以包含一定數(shù)量(<=1000)的單個(gè)過(guò)程,但通常最好將這些過(guò)程按相關(guān)功能分組為多個(gè)模塊。這使得項(xiàng)目的組織更好,并可以讓某個(gè)過(guò)程代碼得到多次的調(diào)用。我們可以使用兩種類型的過(guò)程。(實(shí)際上,有三種類型,但這里不討論屬性過(guò)程。)
第一個(gè)過(guò)程是SUB過(guò)程,這個(gè)過(guò)程可以自己運(yùn)行,也可以被另一個(gè)過(guò)程調(diào)用,或者調(diào)用另外的過(guò)程。需要注意的是:sub過(guò)程不會(huì)向調(diào)用它的過(guò)程提供返回值,它只是執(zhí)行,然后將程序運(yùn)行的控制權(quán)再返回給調(diào)用它的過(guò)程。如果它沒(méi)有被另一個(gè)過(guò)程調(diào)用,只是自己的運(yùn)行,則終止代碼執(zhí)行。
第二個(gè)過(guò)程是函數(shù)Function過(guò)程,這個(gè)過(guò)程類似于SUB過(guò)程,只是函數(shù)可以將值返回給調(diào)用它的過(guò)程。函數(shù)通常將一個(gè)或多個(gè)參數(shù)作為輸入,并將單個(gè)值返回給調(diào)用者,調(diào)用者的值取決于輸入?yún)?shù)的值。我們來(lái)看看下面的的代碼,SUB過(guò)程MYNZ調(diào)用函數(shù)過(guò)程CircleArea,將圓的半徑傳遞給它。CircleArea函數(shù)接受此輸入,進(jìn)行簡(jiǎn)單計(jì)算,并將結(jié)果返回給調(diào)用方過(guò)程。
Sub MYNZ()
Dim Area As Double
Dim Radius As Double
Radius = 11
Area = CircleArea(Radius)
MsgBox "The area is: " & CStr(Area)
End Sub
Function CircleArea(Radius As Double) As Double
CircleArea = 14159 * (Radius ^ 2)
End Function
代碼的截圖:
上面的講解中,無(wú)論是SUB過(guò)程還是Function過(guò)程,都是一個(gè)標(biāo)準(zhǔn)模塊內(nèi)的過(guò)程。
一個(gè)VBA程序工程可以包含任意多個(gè)標(biāo)準(zhǔn)代碼模塊。這使得您可以很容易地將您的過(guò)程劃分為不同的模塊,以便于組織和維護(hù)。例如,可以將所有數(shù)據(jù)庫(kù)過(guò)程放在一個(gè)名為database的模塊中,將所有數(shù)學(xué)過(guò)程放在另一個(gè)名為Math的模塊中。只要過(guò)程沒(méi)有Private關(guān)鍵字聲明,模塊沒(méi)有標(biāo)記為Private,就可以從任何其他模塊調(diào)用,而無(wú)需執(zhí)行任何特殊操作。
本節(jié)知識(shí)點(diǎn)回向:VBA中代碼一般分為幾類?標(biāo)準(zhǔn)模塊代碼一般分為幾部分?SUB過(guò)程和
Function過(guò)程有什么不同?
本節(jié)內(nèi)容詳細(xì)代碼"參考003工作表.XLSM"
VBA是利用Office實(shí)現(xiàn)自己小型辦公自動(dòng)化的有效手段,這是我對(duì)VBA的應(yīng)用界定。在取代OFFICE新的辦公軟件沒(méi)有到來(lái)之前,誰(shuí)能在數(shù)據(jù)處理方面做到極致,誰(shuí)就是王者。其中登峰至極的技能非VBA莫屬!學(xué)習(xí)VBA是個(gè)過(guò)程,也需要經(jīng)歷一種枯燥的感覺(jué),如太白詩(shī)云:眾鳥高飛盡,孤云獨(dú)去閑。相看兩不厭,只有敬亭山。
"水善利萬(wàn)物而不爭(zhēng)",綿綿密密,微則無(wú)聲,巨則洶涌。學(xué)習(xí)亦如此,知道什么是自己所需要的,不要蜷縮在一小塊自認(rèn)為天堂的世界里,待到暮年時(shí)再去做自欺欺人的言論。要努力提高自己,用一顆充滿生機(jī)的心靈,把握現(xiàn)在,這才是進(jìn)取。越是有意義的事情,困難會(huì)越多。愿力決定始終,智慧決定成敗。不管遇到什么,都是風(fēng)景。看淡紛爭(zhēng),看輕得失。茶,滿也好,少也好,不要計(jì)較;濃也好,淡也好,其中自有值得品的味道。去感悟真實(shí)的時(shí)間,靜下心,多學(xué)習(xí),積累福報(bào)。而不是天天混日子,也不是天天熬日子。在后疫情更加嚴(yán)峻的存量殘殺世界中,為自己的生存進(jìn)行知識(shí)的儲(chǔ)備,特別是新知識(shí)的儲(chǔ)備。學(xué)習(xí)時(shí)微而無(wú)聲,利用時(shí)則巨則洶涌。
我記得20年前自己初學(xué)VBA時(shí),那時(shí)的資料甚少,只能看源碼自己琢磨,真的很難。20年過(guò)去了,為了不讓學(xué)習(xí)VBA的朋友重復(fù)我之前的經(jīng)歷,我根據(jù)自己多年VBA實(shí)際利用經(jīng)驗(yàn),推出了六部VBA專門教程。
第一套:VBA代碼解決方案是VBA中各個(gè)知識(shí)點(diǎn)的講解,覆蓋絕大多數(shù)的VBA知識(shí)點(diǎn),初學(xué)必備;
第二套:VBA數(shù)據(jù)庫(kù)解決方案數(shù)據(jù)庫(kù)是數(shù)據(jù)處理的專業(yè)利器,教程中詳細(xì)介紹了利用ADO連接ACCDB和EXCEL的方法和實(shí)例操作,適合中級(jí)人員的學(xué)習(xí)。
第三套:VBA數(shù)組與字典解決方案數(shù)組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學(xué)習(xí),是初級(jí)及中級(jí)人員代碼精進(jìn)的手段。
第四套:VBA代碼解決方案之視頻是專門面向初學(xué)者的視頻講解,可以快速入門,更快的掌握這門技能。
第五套:VBA中類的解讀和利用 這是一部高級(jí)教程,講解類的虛無(wú)與肉身的度化,類的利用雖然較少,但仔細(xì)的學(xué)習(xí)可以促進(jìn)自己VBA理論的提高。
第六套教程:《VBA信息獲取與處理》,這是一部高級(jí)教程,涉及范圍更廣,實(shí)用性更強(qiáng),面向中高級(jí)人員。教程共二十個(gè)專題,包括:跨應(yīng)用程序信息獲得、隨機(jī)信息的利用、電子郵件的發(fā)送、VBA互聯(lián)網(wǎng)數(shù)據(jù)抓取、VBA延時(shí)操作,剪切板應(yīng)用、Split函數(shù)擴(kuò)展、工作表信息與其他應(yīng)用交互,F(xiàn)SO對(duì)象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數(shù)等等內(nèi)容。如需要可以可以WeChat: NZ9668
學(xué)習(xí)的過(guò)程也是修心的過(guò)程,修一個(gè)平靜的心。在代碼的世界中,心平靜了,心情好了,身體自然而然就好。心靜則正,內(nèi)心里沒(méi)有那么多邪知邪見(jiàn),也就沒(méi)有那么多妄想。利人就是利己。這些教程也是為幫助大家起航,助上我自己之力,我的上述教程是我多的經(jīng)驗(yàn)的傳遞,大家可以根據(jù)以上資料1,3,2,6,5或者是4,3,2,6,5的順序逐漸深入的逐漸學(xué)習(xí)。
每一分收獲都是成長(zhǎng)的記錄,怎無(wú)憑,正是這種執(zhí)著,成就了朝霞的燦爛。最后將一闕詞送給致力于VBA學(xué)習(xí)的朋友,讓大家感受一下學(xué)習(xí)過(guò)程的枯燥與執(zhí)著:
浮云掠過(guò),暗語(yǔ)無(wú)聲,
唯有清風(fēng),驚了夢(mèng)中啼鶯。
望星,疏移北斗,
奈將往事雁同行。
阡陌人,昏燈明暗,
忍顧長(zhǎng)亭。
多少VBA人,
暗夜中,悄聲尋夢(mèng),盼卻天明。
怎無(wú)憑!
分享成果,隨喜正能量
版權(quán)說(shuō)明: 本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!
猜你喜歡:
- 2022-09-20 男人惡心是什么病的前兆(惡心是什么病的前兆)
- 2022-09-20 山東財(cái)經(jīng)大學(xué)東方學(xué)院考研率怎么樣(山東財(cái)經(jīng)大學(xué)考研率是多少)
- 2022-09-20 廣西最早的大學(xué)叫什么大學(xué)(在桂林設(shè)立的廣西最早的大學(xué)是哪所大學(xué))
- 2022-09-20 小兒肺炎有5個(gè)常見(jiàn)癥狀嗎(小兒肺炎有5個(gè)常見(jiàn)癥狀)
- 2022-09-20 m是哪個(gè)服裝品牌的標(biāo)志(標(biāo)志為M的衣服是什么牌子的)
- 2022-09-20 什么叫正比例什么叫反比例舉例說(shuō)明(什么叫反比例,舉個(gè)例子說(shuō)明,)
- 2022-09-20 一包煙要多少根煙絲(一包煙要多少根)
- 2022-09-20 男人吃櫻桃對(duì)身體有什么好處(男人吃櫻桃有什么好處)
最新文章:
- 2023-07-02 怎樣挑選新鮮的豬肝?(怎么挑選新鮮豬肝 挑選新鮮豬肝的小技巧)
- 2023-07-02 木地板都有哪些種類(木地板的種類有哪些)
- 2023-07-02 白蠟?zāi)炯揖叩膬?yōu)缺點(diǎn)(松木家具的優(yōu)缺點(diǎn))
- 2023-07-02 怎么清洗窗簾布上的污垢(怎么清洗窗簾)
- 2023-07-02 世界上最可愛(ài)的小倉(cāng)鼠的樣子(可愛(ài)小倉(cāng)鼠的種類)
- 2023-07-02 小貓拉不出來(lái)屎怎么辦(小貓拉不出屎怎么辦)
- 2023-07-02 新飛小冰箱耗電量一天多少度(小冰箱耗電量一天多少度)
- 2023-07-02 公司注銷工業(yè)房產(chǎn)怎么辦手續(xù)(公司注銷工業(yè)房產(chǎn)怎么辦)
- 2023-07-02 鳳凰層到底好還是不好(鳳凰層是哪一層)
- 2023-07-02 馬桶寬度空間留多少(馬桶兩邊的空間大小是多少)
- 2023-07-02 如何訓(xùn)練貓咪小便(如何訓(xùn)練貓大小便)
- 2023-07-02 衛(wèi)生間吊頂防潮層做法圖集(衛(wèi)生間吊頂方法是什么)
- 2023-07-02 狗狗為什么總是流口水怎么辦(狗狗為什么愛(ài)流口水)
- 2023-07-02 臥室窗戶漏水由誰(shuí)負(fù)責(zé)維修(臥室窗戶漏風(fēng)怎么辦)
- 2023-07-02 世界名貓大全(世界名貓你知道幾種)
- 2023-07-02 applewatchseries7和6對(duì)比(apple watch series 7和6的區(qū)別)