一、什麼是 Excel VBA?
先建立概念,了解為什麼要學 VBA。
VBA 是 Visual Basic for Applications 的縮寫,是內建於 Microsoft Office 中的程式語言。 在 Excel 中,VBA 可用來自動化重複工作、建立按鈕功能、批次整理資料、產生報表、匯出檔案,以及與工作表、 儲存格、圖表、樞紐分析等功能互動。
為什麼學 VBA?
- 自動化重複性工作
- 加快資料處理效率
- 減少手動輸入錯誤
- 建立自訂功能與工具
適合的使用情境
- 每日報表整理
- 批次格式套用
- 資料清理與彙整
- 跨工作表資料搬移
你將學到
- VBA 編輯器使用方式
- 程式結構與流程控制
- Excel 物件模型概念
- 實際商務應用案例
二、開發環境設定
開始寫 VBA 前,需要先開啟開發工具與編輯器。
1. 開啟「開發人員」功能區
- 在 Excel 中點選「檔案」→「選項」
- 選擇「自訂功能區」
- 勾選「開發人員」
- 按下「確定」
2. 開啟 VBA 編輯器
有兩種常見方式:
- 按下 Alt + F11
- 在「開發人員」頁籤點選「Visual Basic」
接著可於 VBA 編輯器中插入模組,開始撰寫程式。
3. 插入模組並撰寫第一支巨集
在 VBA 編輯器中,點選「插入」→「模組」,接著貼上以下程式:
執行後會跳出一個訊息視窗,這就是最基本的 VBA 程式。
三、VBA 語法教學
以下整理 Excel VBA 最常用的基礎語法與觀念。
3.1 基本結構與註解
VBA 程式通常由「程序」組成,最常見的是 Sub 與 Function。
| 語法 | 用途 | 說明 |
|---|---|---|
Sub ... End Sub |
建立程序 | 執行某項工作,例如格式設定、資料整理。 |
Function ... End Function |
建立函數 | 可回傳結果,像 Excel 公式一樣被呼叫。 |
' 註解內容 |
加入註解 | 方便日後維護與理解程式流程。 |
3.2 變數與資料型別
使用變數可以暫存資料,讓程式更有彈性。宣告變數時通常使用 Dim。
| 資料型別 | 說明 | 範例 |
|---|---|---|
| Integer | 整數 | Dim age As Integer |
| Long | 較大的整數 | Dim rowNum As Long |
| Double | 小數 | Dim price As Double |
| String | 文字 | Dim userName As String |
| Boolean | 布林值 True/False | Dim isDone As Boolean |
| Date | 日期時間 | Dim today As Date |
| Variant | 可容納多種類型 | Dim data As Variant |
Option Explicit,可強制變數先宣告再使用,減少拼字錯誤。
3.3 條件判斷:If 與 Select Case
當程式需要依條件走不同流程時,可以使用條件判斷。
If...Then...Else
Select Case
3.4 迴圈:For、For Each、Do While
當你要重複執行某個動作時,迴圈會非常重要,尤其是在處理多列資料時。
For...Next
For Each...Next
Do While
3.5 程序與函數
Sub 用來執行工作;Function 用來回傳值。 如果你想建立可重複使用的自訂公式,Function 會很好用。
Sub 範例
Function 範例
在 Excel 儲存格中可使用:
3.6 Excel 物件模型:Workbook、Worksheet、Range
Excel VBA 的核心在於操作 Excel 物件。最常見的三個物件是: Workbook(活頁簿)、Worksheet(工作表)、 Range(儲存格範圍)。
| 物件 | 用途 | 例子 |
|---|---|---|
| Workbook | 代表 Excel 檔案 | ThisWorkbook, Workbooks("報表.xlsx") |
| Worksheet | 代表某一張工作表 | Worksheets("Sheet1") |
| Range | 代表儲存格或範圍 | Range("A1"), Range("A1:C5") |
3.7 錯誤處理
VBA 程式在實務上可能遇到工作表不存在、檔案找不到、資料格式錯誤等問題, 因此建議加入錯誤處理機制。
On Error Resume Next 雖然方便,但容易忽略錯誤,
建議只在你清楚風險時使用。
四、範例應用實作
透過實際案例,理解 VBA 在 Excel 中的常見用途。
範例一:自動格式化報表
此範例會將標題列加粗、設定背景色、並自動調整欄寬。
範例二:自動計算總分與結果
此範例會依照每位學生的國文、英文、數學分數,自動計算總分與是否及格。
範例三:批次建立工作表
這個例子會依據名單自動建立多張工作表,常用於部門、月份、專案分類。
範例四:找出最後一列並清理空白資料
清理資料時,常常需要刪除空白列,以下是一個基礎實作方式。
五、VBA 實務建議與常見技巧
學會語法之後,更重要的是知道如何寫得穩定、可維護。
推薦習慣
- 在模組最上方加入
Option Explicit - 變數命名要清楚,例如
lastRow、totalAmount - 將重複邏輯拆成獨立 Sub 或 Function
- 對重要流程加上註解
- 必要時加入錯誤處理
效能優化技巧
- 批次作業前可暫時關閉畫面更新
- 大量運算時可暫時關閉自動重算
- 避免在迴圈中頻繁選取儲存格
- 盡量直接操作 Range,而不是反覆 Select
避免過度使用 Select 與 Activate
初學者常常會錄製巨集後得到很多 Select 或 Activate,但實務上應盡量避免。
六、互動式小測驗
試試看你是否掌握了 VBA 的基本觀念。
七、總結
Excel VBA 是非常實用的辦公自動化工具,特別適合處理重複性的 Excel 工作。 你可以先從變數、條件判斷、迴圈與 Excel 物件操作開始,接著練習幾個常見自動化案例, 很快就能把原本需要半小時的作業,縮短到幾秒鐘完成。