
不暸解VBA為何物的人來說,學習它最重要的原因就是「為甚麼」,也就是說,VBA可以幫到自己完成甚麼?
對於這個問題,我會回答它最有效的地方是在於能夠「批量完成」指定動作。
難度︰★★★☆☆
實用度︰★★★★★
上手度︰★★★☆☆
應用內容︰
VBA(Macro, 巨集)
🔶教學
具體來說,比如現在你需要建立一連串的工作表,每個工作表對應當月某日(例︰10月1日)。
這樣的話你需要
先決定月份(10月)
→建立新工作表
→把工作表名稱改為指定格式(10月1日)
→重覆剛剛的步驟
→直到月底的日子(10月31日)
換成流程圖就是長這樣子︰

當中重覆的部分就是黃色的地方。
像這樣子你需要重覆31次才完成動作,但如果寫成巨集,你就可以得到像這樣的畫面︰(GIF圖速度係1倍速)

能看出分別嗎?
這就是VBA的作用︰「它可以替你完成重覆動作」。
🔶常見問題
■也許有些人會想「哦,可是我研究怎樣寫,還不如我手動改比較快?」
這裡就是給你拿到成品的地方(一部分會放到Extras讓大家下載、也會把教學放上來)。當然,如果加以鑽研,像是上記例子的code,大概5-10分鐘就寫完。比起每個月都花5分鐘建立工作表,我想,花10分鐘+2秒運行程式會比較有效率吧?
■我的工作不需要建立每月工作表,那VBA還可以怎樣幫助我?
比如你需要批量修改工作表的名稱、儲存格的內容
把「儲存格第二行的文字」抽出來
把每個儲存格的內容輸出成獨立檔案
用讀取模式開啟指定路徑的EXCEL檔案
把每個儲存格第3個文字顏色改為紅色
做一些本來公式就寫得到,可是因為腦袋太累不想思考的事情
■學會VBA之後,是不是不用公式也能KO問題?
視乎你的實際需要。學會VBA後,有時候我不想用腦寫公式(可以參考跟CSE有關的POSTS),它就可以讓我無腦解題了。
像公式裡有長度限制,而且如果寫太長,將來修改起來會很容易混亂,這樣就可以在VBA裡定義變數,閱讀起來也比較簡單。
但工作上未必允許你建立Macro-enable的excel檔(因為可以儲存巨集的是.xlsm,但一般常用的是.xlsx),而且總有些情況不如人意,時間、技術都是因素,學習公式也是很重要的。
又或者說,像用Vlookup就做到的事情,難道要特意寫VBA來解決嗎?
■為甚麼不去學其他編碼語言,像是python、c++?
作為一介文系出身的前社畜,學習編碼需要付出的時間和預期達到的結果,與工作需要並不成正比,我只是選擇了一個較有效率的事情上。
以個人立場來說,VB(A)的編寫方法很直白,就算沒有專門知識,只要你懂excel,便很容易上手,也足夠達到工作上的需要。
■VBA看起來很難,我真的學得會嗎?
不知道文系出身的我能不能說服大家。事實上,由我開始接觸到今天,只是三年左右的時間。而這三年裡大概有兩年時間我是沒有「學習」的意識,只是工作上常接觸才學會了一點點。剩下的一年就是不斷找能夠應用它的工作,然後寫寫看。
回想過來它並沒有自己想像中難,當然還有很多地方我還未學會。而放在這裡的教學和分享,便是過去三年和未來日子的我的成長筆記。
■我只想用公式解決問題,不行嗎?
這是個人選擇。我覺得會寫公式的人比會用VBA的人來得聰明,不過也必須承認有些事情是只有VBA才能辦得到(如︰修改文字顏色)。如果可能將就這些不足,那我覺得只研究公式也沒甚麼問題。
學習,也不過是讓你多一個選擇而已。
以上是我個人預想,在嘗試了解VBA時,大家可能會有的疑問,希望可以讓大家對它的恐懼稍微減輕一點就好了。
之後會再寫一篇介紹初入門VBA可以怎樣做的文章。
