杰瑞科技汇

VB Excel教程怎么学?

Excel VBA 新手完整教程

目錄

  1. 第一部分:入門篇 - 什麼是 VBA?為什麼要用它?
  2. 第二部分:準備工作 - 開啟 VBA 編輯器
  3. 第三部分:核心概念 - 物件、屬性、方法
  4. 第四部分:你的第一個 VBA 程式
  5. 第五部分:程式碼基礎
    • 變數與常數
    • 運算子
    • 條件判斷
    • 迴圈
  6. 第六部分:與 Excel 互動
    • 選取儲存格
    • 讀取與寫入資料
    • 操作工作表和工作簿
  7. 第七部分:進階技巧
    • 巨集錄製器
    • 使用函數
    • 錯誤處理
  8. 第八部分:實戰範例
  9. 第九部分:總結與學習資源

第一部分:入門篇 - 什麼是 VBA?為什麼要用它?

  • VBA 是什麼? VBA 的全名是 Visual Basic for Applications,它是一種內建在 Microsoft Office 套件中的程式語言,你可以把它想像成 Excel 的「超能力」,讓你能自動化重複性的工作、建立自訂函數、設計使用者介面,甚至連結其他應用程式。

    VB Excel教程怎么学?-图1
    (图片来源网络,侵删)
  • 為什麼要用 VBA?

    • 自動化重複工作:每天整理報表、將數據從一個格式轉換到另一個格式,只需點一下按鈕,VBA 就能自動完成數小時的手動工作。
    • 執行複雜計算:Excel 內建函數有限,VBA 可以讓你建立更複雜、更客製化的計算邏輯。
    • 建立自訂工具:你可以設計自己的工具列、按鈕或對話方塊,讓 Excel 更符合你的工作流程。
    • 整合外部資料:VBA 可以從資料庫、文字檔、網頁等外部來源自動抓取資料並匯入 Excel。

第二部分:準備工作 - 開啟 VBA 編輯器

要開始寫 VBA 程式,你需要一個專門的編輯器。

  1. 開啟 VBA 編輯器

    • 在 Excel 中,按下 Alt + F11 鍵。
    • 或者,前往「功能區」 > 「開發工具」 > 點擊「Visual Basic」按鈕。
    • (如果沒有看到「開發工具」選項卡,請前往「檔案」 > 「選項」 > 「自訂功能區」,然後在右側勾選「開發工具」。)
  2. 認識 VBA 編輯器介面

    VB Excel教程怎么学?-图2
    (图片来源网络,侵删)
    • 專案總管:左側的視窗,顯示你的活頁簿(VBAProject)及其包含的元件(如工作表、模組等)。
    • 程式碼視窗:中間的主要區域,你將在這裡編寫和編輯你的程式碼。
    • 屬性視窗:通常在右下角,用來設定選中物件的屬性(將工作表的名稱改為 "新報表")。

第三部分:核心概念 - 物件、屬性、方法

理解 VBA 的關鍵在於把它想像成一個「與 Excel 對話」的過程,這個對話是透過「物件」、「屬性」和「方法」來完成的。

  • 物件:Excel 中的任何東西都可以是一個物件。

    • Workbook (活頁簿)
    • Worksheet (工作表)
    • Range (儲存格範圍)
    • Chart (圖表)
    • Button (按鈕)
  • 屬性:物件的「特徵」或「設定」,它回答了「它長什麼樣子?」的問題。

    • Range("A1").Value:儲存格 A1 的「值」。
    • Range("A1").Font.Color:儲存格 A1 字體的「顏色」。
    • Sheet1.Name:工作表 1 的「名稱」。
  • 方法:物件的「動作」或「行為」,它回答了「你能對它做什麼?」的問題。

    VB Excel教程怎么学?-图3
    (图片来源网络,侵删)
    • Range("A1").ClearContents:清除儲存格 A1 的「內容」。
    • Sheet1.Select:「選取」工作表 1。
    • Range("A1:A10").Copy:「複製」儲存格範圍 A1 到 A10。

簡單的記憶法

  • (點) 用來連接物件和它的屬性/方法。
  • 物件的屬性:描述物件。
  • 物件的方法:操作物件。

第四部分:你的第一個 VBA 程式

我們來寫一個最簡單的程式,在儲存格 A1 顯示 "Hello, VBA!"。

  1. 在 VBA 編輯器中,從「專案總管」中,右鍵點擊你的活頁簿名稱 (VBAProject (你的檔名.xlsx))。
  2. 選擇「插入」 > 「模組」,這會開啟一個新的空白程式碼視窗。
  3. 在程式碼視窗中,輸入以下程式碼:
Sub 第一個程式()
    ' 這是一個註解,不會被執行
    Range("A1").Value = "Hello, VBA!"
End Sub
  1. 執行程式碼
    • 將游標放在 SubEnd Sub 之間。
    • 按下 F5 鍵,或點擊工具列上的「▶」執行按鈕。
  2. 回到 Excel 工作表,你會看到儲存格 A1 的內容已經變成了 "Hello, VBA!"。

程式碼解釋

  • Sub 第一個程式():宣告一個名為「第一個程式」的「子程式」,這是 VBA 程式的基本單位。
  • Range("A1").Value = "Hello, VBA!":這是核心指令。
    • Range("A1"):指定物件為 A1 儲存格。
    • .Value:指定要操作的屬性是「值」。
    • = "Hello, VBA!":將這個屬性設定為右邊的文字。
  • End Sub:宣告子程式結束。

第五部分:程式碼基礎

變數與常數

變數是用來儲存資訊的容器。

  • 宣告變數:使用 Dim 關鍵字,這是一個好習慣,可以避免錯誤。
Sub 使用變數()
    Dim myName As String
    Dim myAge As Integer
    Dim myScore As Double
    myName = "王小明"
    myAge = 30
    myScore = 95.5
    Range("A1").Value = myName
    Range("A2").Value = myAge
    Range("A3").Value = myScore
End Sub
  • 變數類型

    • String:文字 ("你好")
    • Integer:整數 (100)
    • Double:浮點數 (99.9)
    • Boolean:布林值 (True 或 False)
    • Range:儲存格範圍物件
  • 常數:使用 Const 關鍵字,用於儲存不會改變的值。

Sub 使用常數()
    Const PI As Double = 3.14159
    Dim radius As Double
    radius = 10
    Range("A1").Value = "圓面積: " & PI * radius * radius
End Sub

運算子

  • 算術運算子: (加), (減), (乘), (除), ^ (次方)
  • 字串運算子& (連接文字)
    "Hello" & " " & "World"  ' 結果是 "Hello World"
  • 比較運算子: (等於), <> (不等於), > (大於), < (小於)

條件判斷

使用 If...Then...Else 來執行不同的邏輯。

Sub 條件判斷()
    Dim score As Integer
    score = 85
    If score >= 90 Then
        Range("A1").Value = "成績優秀!"
    ElseIf score >= 60 Then
        Range("A1").Value = "及格了!"
    Else
        Range("A1").Value = "需要再努力!"
    End If
End Sub

迴圈

當你需要重複執行某段程式碼時,迴圈就派上用場了。

  • For...Next 迴圈:當你知道要重複的次數時使用。
Sub For迴圈()
    Dim i As Integer
    For i = 1 To 10
        Range("A" & i).Value = "第 " & i & " 行"
    Next i
  • Do...Loop 迴圈:當你滿足某個條件時才停止迴圈。
Sub Do迴圈()
    Dim i As Integer
    i = 1
    Do While i <= 10
        Range("B" & i).Value = "資料 " & i
        i = i + 1
    Loop
End Sub

第六部分:與 Excel 互動

這是 VBA 最核心的部分。

選取儲存格

  • 直接操作 (推薦):直接操作儲存格,而不需要「選取」它,這樣速度更快,且不會干擾使用者的選取範圍。
    Range("C1").Value = "新資料" ' 直接設定 C1 的值
  • 選取儲存格:有時需要模擬使用者的點擊。
    Range("D1").Select ' 選取 D1 儲存格
    ActiveCell.Value = "被選取的儲存格" ' ActiveCell 代表目前被選取的儲存格

讀取與寫入資料

  • 寫入值
    Range("A1").Value = 123
    Range("B1").Value = "文字"
  • 讀取值
    Dim myValue As String
    myValue = Range("A1").Value
    MsgBox "A1 的值是: " & myValue ' MsgBox 會彈出一個對話方塊

操作工作表和工作簿

  • 使用 With 語句:當你需要對同一個物件進行多個操作時,With 可以讓程式碼更簡潔。

    Sub With語句()
        With Range("A1:A5")
            .Value = "測試"
            .Font.Bold = True ' 設定字體為粗體
            .Interior.Color = RGB(255, 255, 0) ' 設定背景色為黃色
        End With
    End Sub
  • 操作不同工作表

    Sub 操作其他工作表()
        ' 方法一:直接指定
        Worksheets("Sheet2").Range("A1").Value = "來自 Sheet1 的資料"
        ' 方法二:使用 With
        With Worksheets("Sheet3")
            .Range("B1").Value = "Hello"
            .Name = "新工作表名稱"
        End With
    End Sub

第七部分:進階技巧

巨集錄製器

這是學習 VBA 最快的方法!

  1. 在 Excel 功能區的「開發工具」中,點擊「錄製巨集」。
  2. 給你的巨集命名,選擇儲存位置,然後點擊「確定」。
  3. 執行你想要自動化的操作(設定格式、排序、輸入公式)。
  4. 完成後,點擊「停止錄製」。
  5. Alt + F11 開啟 VBA 編輯器,你會發現一個模組裡已經自動生成了對應的 VBA 程式碼,你可以學習它、修改它,讓它更完美。

使用函數

你可以自訂函數,在工作表的儲存格中像使用 SUM() 一樣使用它。

' 在模組中定義一個函數
Function 自訂稅率(收入 As Double) As Double
    If 收入 > 50000 Then
        自訂稅率 = 收入 * 0.2
    Else
        自訂稅率 = 收入 * 0.1
    End If
End Function

回到 Excel 工作表,你可以在儲存格中輸入 =自訂稅率(A1) 來計算 A1 值的稅率。

錯誤處理

使用 On Error GoTo 可以讓你的程式更穩健,避免因小錯誤而當機。

Sub 錯誤處理範例()
    On Error GoTo ErrorHandler ' 如果發生錯誤,跳轉到 ErrorHandler 標籤
    ' 這段程式碼可能會出錯
    Range("Z1000").Value = "測試"
    Exit Sub ' 如果沒有錯誤,在此處結束,不會執行下面的 ErrorHandler
ErrorHandler:
    MsgBox "發生錯誤: " & Err.Description ' 顯示錯誤訊息
End Sub

第八部分:實戰範例

範例:建立一個按鈕,自動整理銷售報表

目標:在 "原始資料" 工作表中,有產品、銷量和金額,點擊按鈕後,自動在 "報表" 工作表中整理出總銷量和總金額。

  1. 準備資料

    • 新增一個工作表,命名為 "原始資料"。
    • 在 A1:C1 輸入 "產品", "銷量", "金額"。
    • 輸入一些測試資料。
  2. 建立按鈕

    • 回到 Excel,前往「開發工具」 > 「插入」 > 選擇「按鈕 (ActiveX 控制項)」。
    • 在工作表上拖曳出一個按鈕。
    • 右鍵點擊按鈕,選擇「檢視程式碼」,這會自動開啯 VBA 編輯器,並為你建立一個按鈕的點擊事件。
  3. 編寫 VBA 程式碼: 在自動開啟的程式碼視窗中,輸入以下內容:

Private Sub CommandButton1_Click() ' CommandButton1 是預設的按鈕名稱
    ' --- 宣告變數 ---
    Dim wsSource As Worksheet
    Dim wsReport As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim totalSales As Double
    Dim totalRevenue As Double
    ' --- 設定物件 ---
    Set wsSource = ThisWorkbook.Worksheets("原始資料")
    Set wsReport = ThisWorkbook.Worksheets("報表")
    ' --- 清空舊報表 ---
    wsReport.Cells.ClearContents
    ' --- 計算總和 ---
    ' 找出 "原始資料" 的最後一行
    lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
    totalSales = 0
    totalRevenue = 0
    ' 從第二行開始迴圈 (跳過標題列)
    For i = 2 To lastRow
        totalSales = totalSales + wsSource.Cells(i, 2).Value ' 累加銷量 (B欄)
        totalRevenue = totalRevenue + wsSource.Cells(i, 3).Value ' 累加金額 (C欄)
    Next i
    ' --- 將結果寫入報表 ---
    With wsReport
        .Range("A1").Value = "銷售報表"
        .Range("A3").Value = "總銷量:"
        .Range("B3").Value = totalSales
        .Range("A4").Value = "總金額:"
        .Range("B4").Value = totalRevenue
    End With
    ' --- 顯示完成訊息 ---
    MsgBox "報表整理完成!", vbInformation, "完成"
End Sub
  1. 測試
    • 回到 Excel,確保你處於「設計模式」(開發工具中)。
    • 點擊你建立的按鈕,看看 "報表" 工作表是否自動更新了數據。

第九部分:總結與學習資源

VBA 是一個功能強大的工具,學習曲線初期較陡,但一旦掌握,將極大地提升你的工作效率。

學習建議

  1. 多練習:從小範例開始,嘗試修改程式碼,看看會發生什麼。
  2. 善用巨集錄製器:把它當作你的 VBA 老師,學習標準的指令寫法。
  3. 閱讀 MSDN 文件:Microsoft 的官方文件是最權威的參考資料。
  4. 加入社群:在網路上尋找 VBA 論壇或社群,可以向有經驗的人提問。

推薦資源

  • Microsoft Docs: Office VBA 參考文件
  • Excel VBA Is Fun: YouTube 上有非常多優質的免費教學影片。
  • Stack Overflow: 全球最大的程式設計問答社群,可以搜尋或提問 VBA 問題。

希望這份教程能幫助你順利踏入 Excel VBA 的世界!祝你學習愉快!

分享:
扫描分享到社交APP
上一篇
下一篇