VBA If 條件判斷教學:語法、範例與實務應用全解析

本篇全面解析VBA If條件判斷語法,從單行、多行、Else/ElseIf、巢狀結構到Select Case比較,並結合Excel VBA常見實務案例、常見錯誤與最佳實踐,協助你在自動化與資料處理中靈活運用If語句。

🧮 還在用 Excel 管理專案?試試這些更聰明的工具 🚀

從 Excel 升級到專業專案管理 × 自動化平台

還在用 Excel 追進度?monday.com 幫你把任務、時程、甘特圖、報表全部自動化! 支援 Excel 一鍵匯入,輕鬆轉換成更直覺的視覺化專案看板。 全球 22.5 萬家公司愛用,AI 輔助讓團隊溝通更順暢。
⭐ 最多人使用

從任務到 OKR,一站式專案與團隊協作平台

整合文件、OKR、任務與自動化流程,AI 助你更快完成工作。 也支援從 Excel 匯入專案資料。

輕鬆整理文件 × 規劃專案 × 建立資料庫

Notion AI 幫你自動生成 SOP、專案摘要與任務追蹤頁面。 從 Excel 匯入表格,打造你自己的工作空間。

VBA If 條件判斷語句總覽

在VBA(Visual Basic for Applications)中,If語句是最常用的條件判斷工具,能根據不同情境執行對應的程式碼。無論是自動化Excel表單、資料驗證、錯誤處理,還是流程控制,If語句都扮演關鍵角色。
常見應用場景包括:
– 根據儲存格內容自動分類或填色
– 輸入資料時即時驗證
– 根據多條件決定不同動作
– 與For迴圈、With語句結合進行批次處理

If語句語法詳解

單行If語句語法與範例

單行If語句適用於條件簡單、只需執行一行動作的情境。語法如下:

If 條件 Then 執行語句

範例:

If Range("A1").Value > 100 Then Range("B1").Value = "超過100"

此語句會在A1儲存格大於100時,於B1顯示「超過100」。

適用情境:
– 條件簡單且只需單一動作
– 需提升程式碼簡潔度

常見錯誤:
– 單行If語句不能加Else或ElseIf,否則會出現語法錯誤。

多行If…Then…Else語法

當條件複雜或需執行多行動作時,應使用多行If結構。語法如下:

If 條件 Then
    執行語句1
    執行語句2
Else
    執行語句3
End If

範例:

If Range("A1").Value >= 60 Then
    Range("B1").Value = "及格"
    Range("B1").Interior.Color = vbGreen
Else
    Range("B1").Value = "不及格"
    Range("B1").Interior.Color = vbRed
End If

此範例根據A1分數自動標示及格與否,並以顏色區分。

縮排建議:
– 多行If語句內部建議縮排,提升可讀性。
– 每個If結構必須以End If結尾,否則會出現語法錯誤。

Else與ElseIf語句用法

Else語句語法與範例

Else語句用於當If條件不成立時,執行另一組動作。

If 條件 Then
    執行語句
Else
    另一組語句
End If

範例:

If ActiveCell.Value = "" Then
    MsgBox "請輸入資料"
Else
    MsgBox "資料已填寫"
End If

常見錯誤:
– Else不可單獨存在,必須搭配If語句。

ElseIf語句語法與範例

ElseIf用於多條件判斷,依序檢查每個條件,第一個成立者即執行對應動作。

If 條件1 Then
    執行語句1
ElseIf 條件2 Then
    執行語句2
Else
    執行語句3
End If

範例:

Dim score As Integer
score = Range("A1").Value

If score >= 90 Then
    Range("B1").Value = "優"
ElseIf score >= 80 Then
    Range("B1").Value = "甲"
ElseIf score >= 70 Then
    Range("B1").Value = "乙"
Else
    Range("B1").Value = "丙"
End If

條件順序建議:
– 從最嚴格(或最特殊)條件往下排列,避免條件重疊導致誤判。

注意事項:
– ElseIf可出現多次,Else最多只能有一次且必須在最後。

巢狀If語句與可讀性建議

巢狀If語句語法

當需多層條件判斷時,可在If或ElseIf內再寫If語句,稱為巢狀If。

範例:

If Range("A1").Value <> "" Then
    If IsNumeric(Range("A1").Value) Then
        MsgBox "輸入為數字"
    Else
        MsgBox "請輸入數字"
    End If
Else
    MsgBox "資料未填寫"
End If

可讀性問題與維護建議:
– 巢狀層數過多會降低可讀性,建議適時拆分為獨立子程序或使用Select Case。
– 清楚縮排與註解可提升維護效率。

If語句與Select Case比較

Select Case適合多個明確值的判斷,If語句則適合複雜條件或範圍判斷。

比較項目 If語句 Select Case
適用情境 複雜條件、範圍、邏輯運算 多個明確值、分類判斷
可讀性 巢狀多時較差 結構清晰
彈性
範例 If x>10 And y<5 Then… Select Case x … End Select

建議:
– 多值分類選擇Select Case,複雜邏輯選If語句。

VBA If語句實務應用案例

範例1:根據儲存格內容自動填色

情境:
自動將成績大於80分的儲存格標示為綠色,其餘為紅色。

Dim cell As Range
For Each cell In Range("A2:A10")
    If cell.Value >= 80 Then
        cell.Interior.Color = vbGreen
    Else
        cell.Interior.Color = vbRed
    End If
Next cell

範例2:結合For迴圈進行多條件判斷

情境:
批次檢查多筆資料,根據分數自動分類。

Dim i As Integer
For i = 2 To 20
    If Cells(i, 2).Value >= 90 Then
        Cells(i, 3).Value = "A"
    ElseIf Cells(i, 2).Value >= 80 Then
        Cells(i, 3).Value = "B"
    Else
        Cells(i, 3).Value = "C"
    End If
Next i

範例3:錯誤處理與提示訊息

情境:
判斷使用者輸入是否為數字,並給予適當提示。

If Not IsNumeric(Range("A1").Value) Then
    MsgBox "請輸入數字", vbExclamation
Else
    MsgBox "輸入正確"
End If

常見錯誤與最佳實踐

常見語法錯誤

錯誤類型 說明 修正方式
漏寫End If 多行If結構未正確結束 補上End If
ElseIf拼寫錯誤 寫成Else If(空格) 應為ElseIf(無空格)
單行If加Else 單行If不能有Else 改為多行If…Else…End If
縮排混亂 多層巢狀未縮排 建議每層縮排兩空格

可讀性與維護性建議

  • 避免過度巢狀,複雜邏輯可拆分為子程序。
  • 每個If/ElseIf/Else區塊建議加上註解。
  • 條件判斷順序應由特殊到一般,避免條件重疊。
  • 使用有意義的變數名稱,提升程式碼可讀性。

VBA If語句FAQ

If語句能否嵌套?

可以。If語句可在內部再寫If語句,稱為巢狀If。建議縮排並加註解,避免層數過多影響維護。

ElseIf與Else差異?

ElseIf用於多條件分支,依序判斷每個條件;Else則在所有If與ElseIf皆不成立時執行,且只能有一個,必須放在最後。

If語句能否搭配其他語句使用?

可以。If語句常與For迴圈、Do While、With語句等結合,實現批次處理、資料驗證等功能。

結論與進階學習建議

掌握VBA If語句是自動化Excel、提升資料處理效率的基礎。建議在日常工作中多加練習,並結合其他VBA語法靈活運用。若需進一步提升專案管理與團隊協作效率,可考慮使用如 Monday.comClickUp 等數位工具,這些平台支援自動化流程、任務條件判斷與資料整合,能有效提升團隊生產力,特別適合需要跨部門協作或大量資料處理的專案經理與知識工作者。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

✨ 讓專案管理變簡單,團隊更強大!

在專案推進的每一步,效率就是競爭力。monday.com 整合進度追蹤、團隊協作與資源分配,讓你隨時掌握全局、快速解決問題。
全球18萬家專業團隊已經採用,你還在等什麼?