寫在前面
編程的本質(zhì)是將實(shí)在世界轉(zhuǎn)化成虛擬的邏輯流將處理過(guò)程交給計(jì)算機(jī),我們只需要知道有什么硅急,要什么覆享,中間的邏輯是什么,也就是規(guī)則营袜,規(guī)則是編程實(shí)現(xiàn)的基礎(chǔ)撒顿,退一步看,無(wú)非是一些條件判斷荚板、循環(huán)凤壁,稍微再加上一些處理的技巧而已,這么想你就不會(huì)對(duì)編程望而卻步了跪另。很多人一提到編程就覺(jué)得很神秘,一聽(tīng)說(shuō)程序猿就覺(jué)得是火星物種免绿,其實(shí)看了此文會(huì)發(fā)現(xiàn)原來(lái)人人編程不是夢(mèng)。
在筆者看來(lái),VBA是最適合編程新手入門的一種語(yǔ)言淌哟,它無(wú)需專門安裝,不用編譯徒仓,所見(jiàn)即所得,輕量級(jí)掉弛,與Excel的天然融合症见,語(yǔ)法簡(jiǎn)單,不像java狰晚、C語(yǔ)言等傳統(tǒng)編程語(yǔ)言那么的重筒饰,并且極容易和實(shí)際工作結(jié)合,掌握它能讓你的工作事半功倍壁晒,讓你的一個(gè)小時(shí)勝過(guò)別人一整天瓷们!
初識(shí)VBA
VBA全稱是指Visual Basic for Applications,它是一個(gè)來(lái)自Microsoft的事件驅(qū)動(dòng)的編程語(yǔ)言秒咐。?基本語(yǔ)法源自VB語(yǔ)言谬晕,和微軟的office辦公套件的內(nèi)置函數(shù)完全兼容,現(xiàn)在它主要用于Microsoft Office應(yīng)用程序携取,如Excel攒钳,Word和Access。
從office97開(kāi)始雷滋,VBA作為MS的標(biāo)準(zhǔn)內(nèi)置配置不撑,彌補(bǔ)了excel內(nèi)在的基本函數(shù)不足以支持的復(fù)雜計(jì)算,提供了一種相對(duì)輕量級(jí)的晤斩、所見(jiàn)即所得的解決方案焕檬,筆者在21世紀(jì)初因內(nèi)部工作需要(統(tǒng)計(jì)代碼行數(shù)記工作量)第一次接觸了VBA,并在以后的工作中多次出色的完成相關(guān)任務(wù)澳泵。
VBA編程入門
打開(kāi)VBA窗口的方法有三種实愚,一種是在菜單中調(diào)出;第二種方法是在sheet頁(yè)點(diǎn)擊鼠標(biāo)右鍵調(diào)出兔辅;第三種方法是通過(guò)快捷鍵ALT+F11調(diào)出腊敲。
編程窗口主要有三個(gè)區(qū)域,分別是資源管理區(qū)维苔、編碼區(qū)碰辅、控件屬性區(qū)以及調(diào)試區(qū)。
幾個(gè)術(shù)語(yǔ)
模塊:是編寫代碼的區(qū)域介时『醺埃可通過(guò)插入模塊的方式創(chuàng)建忍法,插入模塊完成之后,就可以在模塊中編寫VBA代碼榕吼,代碼寫在一個(gè)過(guò)程(Sub)中。一個(gè)過(guò)程/子過(guò)程是一系列的VBA語(yǔ)句勉失,指示要做什么工作羹蚣。
過(guò)程:是作為一個(gè)整體執(zhí)行的一組語(yǔ)句,它指示Excel如何執(zhí)行特定的任務(wù)乱凿。執(zhí)行的任務(wù)可能是一個(gè)非常簡(jiǎn)單或非常復(fù)雜的任務(wù)顽素。不過(guò),把復(fù)雜的程序分解成小的程序是一個(gè)很好的做法胁出。
過(guò)程的兩種主要類型段审,它們分別是:子過(guò)程(Sub)和函數(shù)(Function),下面就是其中的一段代碼:
函數(shù):是一組可重用的代碼抑淫,可以在程序中的任何地方調(diào)用姥闪。這消除了一遍又一遍地編寫相同的代碼的需要。這有助于程序員將大型程序劃分為許多小型且可管理的功能催式。
除了內(nèi)置函數(shù)外避归,VBA還允許編寫用戶定義的函數(shù),并在 Function 和 End Function 關(guān)鍵字之間寫入語(yǔ)句喉童。
例如下面的這個(gè)獲取文件名的函數(shù)就可以在不同場(chǎng)合使用call來(lái)調(diào)用:
寫在最后
了解了前面說(shuō)的那些知識(shí)堂氯,基本可以自己寫出一段初始的程序了牌废。
下面是一個(gè)稍微復(fù)雜一點(diǎn)的例子——找重復(fù)內(nèi)容。
效率嗷嗷高的畫風(fēng)是不是撲面而來(lái)晶框!
而實(shí)現(xiàn)這一功能只需要短短的40行代碼: