Excelで入力するときにテキストボックスをオートコンプリートするにはどうすればよいですか?
既定では、Excelは現在のワークシートのセルに入力した内容を記憶し、次に関連する頭文字を新しいセルに入力するときにこのコンテンツをオートコンプリートできます。 ただし、ワークシートに入力したすべてのコンテンツをテキストボックス(ActiveXコントロール)でオートコンプリートする場合は、どうすればよいでしょうか。 この記事では、内部に頭文字を入力するときにテキストボックスをオートコンプリートするのに役立つVBAメソッドを提供します。
VBAコードで入力するときにテキストボックスをオートコンプリートする
- 何でも再利用: 最もよく使用される、または複雑な数式、グラフなどをお気に入りに追加して、後ですぐに再利用できます。
- 20以上のテキスト機能: テキスト文字列から数値を抽出します。 テキストの一部を抽出または削除します。 数字と通貨を英語の単語に変換します。
- マージツール:複数のワークブックとシートをXNUMXつに。 データを失うことなく複数のセル/行/列をマージします。 重複する行と合計をマージします。
- 分割ツール:値に基づいてデータを複数のシートに分割します。 XNUMXつのワークブックから複数のExcel、PDF、またはCSVファイル。 XNUMX列から複数列。
- 貼り付けスキップ 非表示/フィルタリングされた行; カウントと合計 背景色別; パーソナライズされた電子メールを複数の受信者にまとめて送信します。
- スーパーフィルター: 高度なフィルタースキームを作成し、任意のシートに適用します。 ソート 週、日、頻度など。 フィルタ 太字、数式、コメント...
- 300以上の強力な機能。 Office2007-2019および365で動作します。 すべての言語をサポートします。 企業や組織に簡単に導入できます。
VBAコードで入力するときにテキストボックスをオートコンプリートする
テキストボックス内に頭文字を入力するときにテキストボックスをオートコンプリートするには、次のようにしてください。
1.をクリックしてテキストボックスを挿入してください ディベロッパー > インセット > テキストボックス(ActiveXコントロール)。 スクリーンショットを参照してください:
2.次に、をクリックします ディベロッパー > インセット > リストボックス(ActiveXコントロール) 現在のワークシートにリストボックスを挿入します。 スクリーンショットを参照してください:
3.シートタブを右クリックし、をクリックします コードを表示 以下のスクリーンショットのように、コンテキストメニューから。
4。 の中に Microsoft Visual Basic for Applications ウィンドウの場合は、以下のVBAコードをコピーしてコードウィンドウに貼り付けてください。 そして、 BHツール > リファレンス、次に確認します 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 と Textbox1 ワークシートに挿入したリストボックスとテキストボックスの名前です。
5。 プレス 他の + Q 終了するためのキー Microsoft Visual Basic for Applications 窓。
6.をクリックしてデザインモードをオフにします ディベロッパー > デザインモード ワークシートで。
7.次に、別のワークシートに移動してから、前のワークシートに戻ってVBAコードを有効にします。
今後。 テキストボックスに最初の文字を入力すると、ワークシートに入力したその文字で始まるすべてのテキストが、テキストボックスの右側にあるリストボックス内に一覧表示されます。 必要なものをダブルクリックして、テキストボックスに入力してください。 スクリーンショットを参照してください:
ノート:あなたは Up or 値下がり 矢印キーを押してリストボックス内のすべてのオートコンプリートテキスト間を移動し、 入力します 必要なものをテキストボックスに入力するためのキー。
関連記事:
- Excelでテキストボックスが選択されているときにテキストボックスのテキストを自動選択するにはどうすればよいですか?
- Excelでクリックしたときにテキストボックスの内容をクリアするにはどうすればよいですか?
- 複数のセルのテキストをExcelのテキストボックスに連結するにはどうすればよいですか?
- ユーザーがExcelに入力できないように、テキストボックスでの編集を無効にするにはどうすればよいですか?
- Excelでテキストボックスをパーセンテージとしてフォーマットするにはどうすればよいですか?
最高のオフィス生産性ツール
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
- 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
- スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
- セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
- [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
- 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
- テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
- スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
- ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
- 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。

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