01
VBA全稱是指Visual Basic for Applications,它是一個來自Microsoft的事件驅(qū)動的編程語言。 基本語法源自VB語言,和微軟的office辦公套件的內(nèi)置函數(shù)完全兼容,現(xiàn)在它主要用于Microsoft Office應(yīng)用程序,如Excel,Word和Access。
從office97開始,VBA作為MS的標(biāo)準(zhǔn)內(nèi)置配置,彌補了excel內(nèi)在的基本函數(shù)不足以支持的復(fù)雜計算,提供了一種相對輕量級的、所見即所得的解決方案,濤哥在21世紀(jì)初因內(nèi)部工作需要(統(tǒng)計代碼行數(shù)記工作量)第一次接觸了VBA,并在以后的工作中多次出色的完成相關(guān)任務(wù),甚至給濤嫂編的幾個小程序大大提升了她們的工作效率,還受到了時任行長的贊許,現(xiàn)在想來還歷歷在目。
02
VBA的應(yīng)用
可能有人會說了,excel有非常豐富的內(nèi)置函數(shù)庫,能滿足大多數(shù)場景的需要,VBA就沒必要學(xué)了吧,也對也不對,濤哥有個專輯專門介紹這些常用函數(shù)的使用方法,確實,對于簡單的場景或者說對于大多數(shù)對excel了解不深的人來說,學(xué)幾個函數(shù)覺得老神奇了,但是對于稍微復(fù)雜一點的場景就顯得無能為力,即使看起來挺簡單的場景。
下面我舉個例子:某小學(xué)的數(shù)學(xué)老師需要編排一套口算題,大概有50頁,每頁100道題,內(nèi)容來源不詳,但有一個要求,那就是每頁的題不能有重復(fù)的,不同的頁可以重復(fù)。
這個要求不高,看似也不難,如果是你你會怎么做?思考10秒鐘……
估計大部分人首先想到的是一頁頁對比,50頁5000道題,工作量可想而知,濤哥也搜腸刮肚的想了挺多方法,最終還是覺得用VBA來實現(xiàn)最快最準(zhǔn)確。
下面這40行代碼就可以完成任務(wù),它把每頁的重復(fù)題目標(biāo)成紅色,并統(tǒng)計出共有多少道重復(fù)的題目。
03
找門兒VBA
打開VBA窗口的方法有三種,一種是在菜單中調(diào)出;第二種方法是在sheet頁點擊鼠標(biāo)右鍵調(diào)出;第三種方法是通過快捷鍵ALT+F11調(diào)出。
直線雙圖文字
VBA窗口
03
敲門兒VBA
幾個常用術(shù)語:
模塊
是編寫代碼的區(qū)域。可通過插入模塊的方式創(chuàng)建,插入模塊完成之后,就可以在模塊中編寫VBA代碼,代碼寫在一個過程(Sub)中。一個過程/子過程是一系列的VBA語句,指示要做什么工作。
程序/過程
程序(也叫作過程)是作為一個整體執(zhí)行的一組語句,它指示Excel如何執(zhí)行特定的任務(wù)。執(zhí)行的任務(wù)可能是一個非常簡單或非常復(fù)雜的任務(wù)。不過,把復(fù)雜的程序分解成小的程序是一個很好的做法。
程序的兩種主要類型,它們分別是:子程序(Sub)和函數(shù)(Function),下面就是其中的一段代碼:
函數(shù)
函數(shù)是一組可重用的代碼,可以在程序中的任何地方調(diào)用。這消除了一遍又一遍地編寫相同的代碼的需要。這有助于程序員將大型程序劃分為許多小型且可管理的功能。
除了內(nèi)置函數(shù)外,VBA還允許編寫用戶定義的函數(shù),并在 Function 和 End Function 關(guān)鍵字之間寫入語句。
例如下面的這個獲取文件名的函數(shù)就可以在不同場合使用call來調(diào)用。
04
入門兒VBA
要想學(xué)VBA,首先要知道宏,要學(xué)會錄制宏,這可以很好的助力vba代碼的編寫,下面演示一個添加宏的例子,就算VBA的入門禮兒了。
05
寫在最后
很多人一提到編程就覺得很神秘,一聽說程序猿就覺得是火星物種,其實看了此文會發(fā)現(xiàn)原來人人編程不是夢。
編程的本質(zhì)是將實在世界轉(zhuǎn)化成虛擬的邏輯流將處理過程交給計算機,我們只需要知道有什么,要什么,中間的邏輯是什么,也就是規(guī)則,規(guī)則是編程實現(xiàn)的基礎(chǔ),退一步看,無非是一些條件判斷、循環(huán),稍微再加上一些處理的技巧而已,這么想你就不會對編程望而卻步了。
但也不是說誰都可以像編小曲兒一樣說編就編的,至少它在底層邏輯方面要求具備數(shù)學(xué)、計算機、哲學(xué)、邏輯學(xué)、美學(xué)、甚至心理學(xué)等學(xué)科的一些思路和思維方式的,也許有時你不一定意識得到。
不過任何事情到了高階都不會太容易,好在VBA讓你入門兒不成問題,它無需專門安裝,不用編譯,所見即所得,輕量級,與Excel的天然融合,語法的簡潔簡單,可視化等優(yōu)勢,是很多像java,C語言等傳統(tǒng)的重量級編程語言無法比擬的,只需要稍微深入那么一點點,將會讓你在數(shù)據(jù)的處理工作方面一個小時勝過別人一整天……
聯(lián)系客服