寬表格錄入時,來回捲動找欄位、手動輸入長文字(如部門名稱)極易錯行、拼錯。利用 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
VBAProject (您的檔案.xlsm) → 「Microsoft Excel 物件」→ 雙擊目標工作表(如 Sheet1)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 具備「輸入即轉換」智慧。將代碼對照表封裝在巨集中,不佔用儲存格、不怕被誤刪、跨檔案複製即用。適合固定格式表單、非技術人員填報、大量重複錄入場景,真正實現「一勞永逸」。