面對欄位眾多的 Excel 表單,來回捲動尋找欄位、手動輸入長文字(如部門名稱、產品類別、客戶等級)不僅慢,還極易錯行、打錯字。若能「輸入數字代碼,自動轉為對應文字」,錄入速度與準確度將大幅提升。本文教你用 VBA Worksheet_Change 事件 實現這一功能,一次設定、長期受益。
人資表單錄入員工資料時,「所屬部門」欄位固定為:一車間、二車間、銷售部、行政部、財務部… 每次輸入完整名稱耗時且易誤。規劃代碼對照表:
1=一車間、2=二車間、3=銷售部、4=行政部、5=財務部。
錄入時僅輸入 1~5,系統自動轉換為對應部門名稱。
Private Sub Worksheet_Change(ByVal Target As Range)
' 僅在第二欄(B欄)觸發
If Target.Column <> 2 Then Exit Sub
' 僅處理單一儲存格變更,避免批貼上觸發錯誤
If Target.CountLarge > 1 Then Exit Sub
Application.EnableEvents = False ' 防止遞迴觸發
On Error GoTo CleanExit
Select Case Target.Value
Case 1: Target.Value = "一車間"
Case 2: Target.Value = "二車間"
Case 3: Target.Value = "銷售部"
Case 4: Target.Value = "行政部"
Case 5: Target.Value = "財務部"
' 可依需求擴充更多 Case
End Select
CleanExit:
Application.EnableEvents = True
End Sub
VLookup 或 Dictionary 物件查找,維護更彈性。1,2,3,4,5,限制使用者只能輸入合法代碼,並提供下拉選單提示。「尋找取代」會掃描整個工作表,極易將其他欄位同樣數字(如編號、電話尾碼)誤替換;逐項確認又極慢。VBA 針對特定欄位、即時轉換,零誤傷、零手動干預,真正實現「一勞永逸」。
幾行代碼,讓 Excel 變身智慧錄入表單,下次面對大量文字欄位,試試「數字代碼法」吧!