萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Windows XP 教學

Excel VBA 實現代碼轉文字快速錄入:部門代碼自動展開、防誤替換、一勞永逸

寬表格錄入時,來回捲動找欄位、手動輸入長文字(如部門名稱)極易錯行、拼錯。利用 Worksheet_Change 事件巨集,輸入代碼(1/2/3)自動展開為全名(一車間/二車間/銷售部),限定特定欄位生效,不影響其他欄位同樣數字。本文完整代碼、部署步驟與擴充應用。

核心代碼

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo ErrHandler
    Application.EnableEvents = False
    
    ' 僅在第 2 欄(B 欄)觸發
    If Target.Column = 2 Then
        Select Case Target.Value
            Case 1: Target.Value = "一車間"
            Case 2: Target.Value = "二車間"
            Case 3: Target.Value = "銷售部"
            ' 可持續擴充 Case 4, 5...
        End Select
    End If
    
ExitSub:
    Application.EnableEvents = True
    Exit Sub
    
ErrHandler:
    Application.EnableEvents = True
    MsgBox "代碼轉換錯誤:" & Err.Description
End Sub

部署步驟

  1. 開啟目標活頁簿 → Alt+F11 開啟 VBE
  2. 專案總管 → 展開 VBAProject (您的檔案.xlsm) → 「Microsoft Excel 物件」→ 雙擊目標工作表(如 Sheet1)
  3. 貼上上述代碼 → 關閉 VBE
  4. 儲存檔案為 巨集啟用的活頁簿 (.xlsm)
  5. 回到工作表,B 欄輸入 1/2/3 → 自動變文字

關鍵設計細節

  • Target.Column = 2 限定欄位,避免 A 欄、C 欄輸入 1/2/3 被誤替換
  • Application.EnableEvents = False 防止 Value 變更再次觸發 Change 事件造成無限迴圈
  • Select Case 結構清晰易維護,新增部門只需加 Case 行
  • 錯誤處理確保 EnableEvents 必定恢復 True

擴充應用場景

場景實作方式
多欄位不同代碼表用 Select Case Target.Column 巢狀 Select Case Target.Value
代碼對應表放在隱藏工作表Target.Value = Sheets("CodeTable").Cells(Target.Value, 2).Value 動態查表
需保留原代碼、另欄顯示文字Target.Offset(0,1).Value = ... 寫入鄰欄
配合資料驗證下拉選單資料驗證 → 序列 → 來源指向代碼表,雙重保障

結語

VBA Worksheet_Change 事件讓 Excel 具備「輸入即轉換」智慧。將代碼對照表封裝在巨集中,不佔用儲存格、不怕被誤刪、跨檔案複製即用。適合固定格式表單、非技術人員填報、大量重複錄入場景,真正實現「一勞永逸」。

copyright © 萬盛學電腦網 all rights reserved