Excelで入力するときにテキストボックスをオートコンプリートするにはどうすればよいですか?
既定では、Excelは現在のワークシートのセルに入力した内容を記憶し、次に関連する頭文字を新しいセルに入力するときにこのコンテンツをオートコンプリートできます。 ただし、ワークシートに入力したすべてのコンテンツをテキストボックス(ActiveXコントロール)でオートコンプリートする場合は、どうすればよいでしょうか。 この記事では、内部に頭文字を入力するときにテキストボックスをオートコンプリートするのに役立つVBAメソッドを提供します。
VBAコードで入力するときにテキストボックスをオートコンプリートする
- 何でも再利用: 最もよく使用される、または複雑な数式、グラフなどをお気に入りに追加して、後ですぐに再利用できます。
- 20以上のテキスト機能: テキスト文字列から数値を抽出します。 テキストの一部を抽出または削除します。 数字と通貨を英語の単語に変換します。
- マージツール:複数のワークブックとシートをXNUMXつに。 データを失うことなく複数のセル/行/列をマージします。 重複する行と合計をマージします。
- 分割ツール:値に基づいてデータを複数のシートに分割します。 XNUMXつのワークブックから複数のExcel、PDF、またはCSVファイル。 XNUMX列から複数列。
- 貼り付けスキップ 非表示/フィルタリングされた行; カウントと合計 背景色別; パーソナライズされた電子メールを複数の受信者にまとめて送信します。
- スーパーフィルター: 高度なフィルタースキームを作成し、任意のシートに適用します。 並び替え 週、日、頻度など。 フィルタ 太字、数式、コメント...
- 300 以上の強力な機能。 Office 2007-2021 および 365 で動作します。 すべての言語をサポートします。 企業や組織に簡単に導入できます。
VBAコードで入力するときにテキストボックスをオートコンプリートする
テキストボックス内に頭文字を入力するときにテキストボックスをオートコンプリートするには、次のようにしてください。
1.をクリックしてテキストボックスを挿入してください ディベロッパー > インセット > テキストボックス(ActiveXコントロール)。 スクリーンショットを参照してください:
2.次に、をクリックします ディベロッパー > インセット > リストボックス(ActiveXコントロール) 現在のワークシートにリストボックスを挿入します。 スクリーンショットを参照してください:
3.シートタブを右クリックし、をクリックします コードを表示 以下のスクリーンショットのように、コンテキストメニューから。
4。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウの場合は、以下のVBAコードをコピーしてコードウィンドウに貼り付けてください。 そして、 工具 > リファレンス、次に確認します Microsoftスクリプトランタイム 内箱 参照– VBAProject ダイアログボックス。 スクリーンショットを参照してください:
VBAコード:入力時にテキストボックスをオートコンプリートします
Dim xRg As Range
Dim xDic As New Dictionary
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox1.Value = Me.ListBox1.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim xVal As String
On Error Resume Next
If IsNumeric(Target.Value) Then
xVal = Str(Target.Value)
Else
xVal = Target.Value
End If
If xVal <> "" Then
If Not xDic.Exists(xVal) Then
xDic.Add xVal, xVal
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.ListBox1.Visible = False
End Sub
Private Sub Worksheet_Activate()
Dim I As Long
Dim xStr As String
On Error Resume Next
If xRg Is Nothing Then
Set xRg = ActiveSheet.UsedRange
End If
Me.ListBox1.Visible = False
xDic.RemoveAll
With Me.ListBox1
For I = 1 To xRg.Count
xStr = xRg(I).Value
If xStr <> "" Then
.AddItem xStr
If Not xDic.Exists(xStr) Then
xDic.Add xStr, xStr
End If
End If
Next
End With
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
With Me.ListBox1
.Top = Me.TextBox1.Top
.Left = Me.TextBox1.Left + Me.TextBox1.Width
.Width = Me.TextBox1.Width
End With
TextBoxVal Me.TextBox1.Object
End Sub
Sub TextBoxVal(xTextBox As Variant)
Dim I As Long
Dim xStr As String
On Error Resume Next
Application.ScreenUpdating = False
If xRg Is Nothing Then Exit Sub
Me.ListBox1.Clear
xStr = xTextBox.Value
If xStr = "" Then
Me.ListBox1.Visible = False
Application.EnableEvents = True
Exit Sub
End If
For I = 0 To UBound(xDic.Items)
If Left(xDic.Items(I), Len(xStr)) = xStr Then
Me.ListBox1.AddItem xDic.Items(I)
End If
Next
Me.ListBox1.Visible = True
If Me.ListBox1.ListCount > 0 Then
With xTextBox
.Value = Me.ListBox1.List(0)
.SelStart = Len(xStr)
.SelLength = Len(Me.ListBox1.List(0))
End With
End If
Me.ListBox1.Activate
Me.ListBox1.Selected(0) = True
Application.ScreenUpdating = True
End Sub
Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
Me.TextBox1.Value = Me.ListBox1.Value
End If
End Sub
注意:コードでは、 ListBox1 及び テキストボックス1 ワークシートに挿入したリストボックスとテキストボックスの名前です。
5。 プレス 他の + Q 終了するためのキー アプリケーション向け Microsoft Visual Basic 窓。
6.をクリックしてデザインモードをオフにします ディベロッパー > デザインモード ワークシートで。
7.次に、別のワークシートに移動してから、前のワークシートに戻ってVBAコードを有効にします。
今後。 テキストボックスに最初の文字を入力すると、ワークシートに入力したその文字で始まるすべてのテキストが、テキストボックスの右側にあるリストボックス内に一覧表示されます。 必要なものをダブルクリックして、テキストボックスに入力してください。 スクリーンショットを参照してください:
注意:あなたは Up or 値下がり 矢印キーを押してリストボックス内のすべてのオートコンプリートテキスト間を移動し、 入力します 必要なものをテキストボックスに入力するためのキー。
関連記事:
- Excelでテキストボックスが選択されているときにテキストボックスのテキストを自動選択するにはどうすればよいですか?
- Excelでクリックしたときにテキストボックスの内容をクリアするにはどうすればよいですか?
- 複数のセルのテキストをExcelのテキストボックスに連結するにはどうすればよいですか?
- ユーザーがExcelに入力できないように、テキストボックスでの編集を無効にするにはどうすればよいですか?
- Excelでテキストボックスをパーセンテージとしてフォーマットするにはどうすればよいですか?
最高のオフィス生産性ツール
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
- 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
- スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
- セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
- [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
- 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
- テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
- スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
- ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
- 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作業をはるかに簡単にします
- Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
- 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
