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