Excelを使っていて、
入力用のリストを作成する際にこんなこと、ありませんか?
入力規則のリストは
「01 山田太郎」「02 佐藤花子」 のように作りたい
でもセルに残したいのは 番号だけ(01、02 など)
あとから手作業で削るのは面倒ですし、ミスの元にもなります。
そんなときに便利なのが、Worksheet_Change イベントマクロです。
やりたいこと
セルに
01 山田太郎
と入力(またはリスト選択)
入力確定と同時に
👉 「01」だけを自動で残す
使用するVBAコード
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
Dim inputValue As String
' C2のみを対象にする(必要に応じて変更)
If Not Intersect(Target, Me.Range("C2")) Is Nothing Then
Application.EnableEvents = False ' 無限ループ防止
For Each cell In Target
If Not IsEmpty(cell.Value) Then
inputValue = CStr(cell.Value)
' 先頭から指定された文字数のみを抽出
If Len(inputValue) > 0 Then
cell.Value = Left(inputValue, 2)
End If
End If
Next cell
Application.EnableEvents = True
End If
End Sub
このマクロの動き
C2セルに入力があったときのみ反応
入力された文字列の
👉 先頭から2文字だけを自動抽出
それ以外の文字(氏名など)は自動で削除
カスタマイズポイント
・対象セルを変更したい場合
Me.Range(“C2”) を Me.Range(“C2:C100”)のように変更すれば、複数セルにも対応できます。
・抽出する文字数を変えたい場合
Left(inputValue, 2) の2を変更してください。
4文字抽出したいときは、 Left(inputValue, 4)
こんな場面で便利
・出席番号・社員番号・管理番号の入力
・VLOOKUP や XLOOKUP 用のキー作成
入力のたびに手作業で修正する必要がなくなり、
入力ミス防止+作業効率アップにつながります。
ちょっとした工夫ですが、実務ではかなり重宝するマクロです。
同じような入力で悩んでいる方の参考になれば幸いです。

