AutoComplete(入力補完)の基本
Excel VBAで「入力途中の文字から候補を補完したい」「ユーザーが入力しやすいように自動補完したい」といった場面では AutoComplete処理 を組み込むことができます。
初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- AutoCompleteとは?
入力途中の文字列から候補を探し、残りを自動で補完する仕組み。 - 用途:
- 商品名や顧客名の入力補助
- 都市名やコードの入力補助
- 入力ミスを減らす
- 実装方法:
- UserFormの TextBox に入力イベントを仕込む
- シートや配列に候補リストを用意
- 入力文字列に一致する候補を探して補完
テンプレ1:TextBoxで簡易AutoComplete
UserFormに TextBox1 を配置。候補リストを配列で用意。
Private Sub TextBox1_Change()
Dim candidates As Variant
candidates = Array("東京", "大阪", "名古屋", "札幌", "福岡")
Dim inputText As String
inputText = TextBox1.Text
Dim i As Long
For i = LBound(candidates) To UBound(candidates)
If inputText <> "" And LCase(candidates(i)) Like LCase(inputText & "*") Then
TextBox1.Text = candidates(i)
TextBox1.SelStart = Len(inputText) ' 入力済み部分を選択
TextBox1.SelLength = Len(candidates(i)) - Len(inputText)
Exit For
End If
Next i
End Sub
VB- ポイント:
- 入力途中の文字に一致する候補を探す。
- 残り部分を自動補完して選択状態にする。
テンプレ2:シートのデータを候補にする
Private Sub TextBox1_Change()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim inputText As String
inputText = TextBox1.Text
Dim i As Long
For i = 2 To lastRow
If inputText <> "" And LCase(ws.Cells(i, 1).Value) Like LCase(inputText & "*") Then
TextBox1.Text = ws.Cells(i, 1).Value
TextBox1.SelStart = Len(inputText)
TextBox1.SelLength = Len(ws.Cells(i, 1).Value) - Len(inputText)
Exit For
End If
Next i
End Sub
VB- ポイント:
- シート「Data」のA列を候補リストに。
- 入力補助をシートデータに連動させられる。
テンプレ3:複数候補をListBoxに表示(候補選択型)
UserFormに TextBox1 と ListBox1 を配置。
Private Sub TextBox1_Change()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Dim inputText As String
inputText = TextBox1.Text
ListBox1.Clear
Dim i As Long
For i = 2 To lastRow
If inputText <> "" And LCase(ws.Cells(i, 1).Value) Like LCase(inputText & "*") Then
ListBox1.AddItem ws.Cells(i, 1).Value
End If
Next i
End Sub
Private Sub ListBox1_Click()
TextBox1.Text = ListBox1.Value
End Sub
VB- ポイント:
- 候補をListBoxに表示。
- 候補をクリックするとTextBoxに反映。
テンプレ4:ユーザーが選んだ候補をシートに書き戻す
Private Sub CommandButton1_Click()
Worksheets("Result").Range("A1").Value = TextBox1.Value
MsgBox "選択された値をシートに保存しました"
End Sub
VB- ポイント:
- AutoCompleteで選んだ値をシートに書き戻す。
例題で練習
'例1:配列から候補を補完
' → TextBox1_Change にコードを記述
'例2:シートのデータを候補にする
' → TextBox1_Change にコードを記述
'例3:候補をListBoxに表示
' → TextBox1_Change と ListBox1_Click にコードを記述
'例4:選択値をシートに書き戻す
' → CommandButton1_Click にコードを記述
VB初心者向けポイント
- TextBoxのChangeイベントが鍵 → 入力が変わるたびに候補を探す。
- SelStart / SelLengthで補完部分を選択 → 自動補完の見た目を再現。
- 配列 or シートデータを候補に → 実務ではシート連動が便利。
- ListBoxと組み合わせると柔軟 → 複数候補から選べる。
- Validate処理と組み合わせると安心 → 候補外の入力を防げる。
👉 この「AutoCompleteテンプレ」を覚えておけば、Excel VBAで 入力補助機能を作り、ユーザーが効率的に正しいデータを入力できるフォーム を簡単に実装できます。
