Excelで入力するときにテキストボックスをオートコンプリートするにはどうすればよいですか?
既定では、Excelは現在のワークシートのセルに入力した内容を記憶し、次に関連する頭文字を新しいセルに入力するときにこのコンテンツをオートコンプリートできます。 ただし、ワークシートに入力したすべてのコンテンツをテキストボックス(ActiveXコントロール)でオートコンプリートする場合は、どうすればよいでしょうか。 この記事では、内部に頭文字を入力するときにテキストボックスをオートコンプリートするのに役立つVBAメソッドを提供します。
VBAコードで入力するときにテキストボックスをオートコンプリートする
VBAコードで入力するときにテキストボックスをオートコンプリートする
テキストボックス内に頭文字を入力するときにテキストボックスをオートコンプリートするには、次のようにしてください。
1.をクリックしてテキストボックスを挿入してください Developer > インセット > テキストボックス(ActiveXコントロール)。 スクリーンショットを参照してください:
2.次に、をクリックします Developer > インセット > リストボックス(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
Note:コードでは、 ListBox1 & テキストボックス1 ワークシートに挿入したリストボックスとテキストボックスの名前です。
5。 プレス 他の + Q 終了するためのキー アプリケーション向け Microsoft Visual Basic 窓。
6.をクリックしてデザインモードをオフにします Developer > デザインモード ワークシートで。
7.次に、別のワークシートに移動してから、前のワークシートに戻ってVBAコードを有効にします。
今後。 テキストボックスに最初の文字を入力すると、ワークシートに入力したその文字で始まるすべてのテキストが、テキストボックスの右側にあるリストボックス内に一覧表示されます。 必要なものをダブルクリックして、テキストボックスに入力してください。 スクリーンショットを参照してください:
Note:あなたは Up or Down 矢印キーを押してリストボックス内のすべてのオートコンプリートテキスト間を移動し、 入力します 必要なものをテキストボックスに入力するためのキー。
関連記事:
- Excelでテキストボックスが選択されているときにテキストボックスのテキストを自動選択するにはどうすればよいですか?
- Excelでクリックしたときにテキストボックスの内容をクリアするにはどうすればよいですか?
- 複数のセルのテキストをExcelのテキストボックスに連結するにはどうすればよいですか?
- ユーザーがExcelに入力できないように、テキストボックスでの編集を無効にするにはどうすればよいですか?
- Excelでテキストボックスをパーセンテージとしてフォーマットするにはどうすればよいですか?
最高のオフィス生産性向上ツール
🤖 | Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行 | コードを生成 | カスタム数式の作成 | データを分析してグラフを生成する | Kutools関数を呼び出す... |
人気の機能: 重複を検索、強調表示、または識別する | 空白行を削除する | データを失わずに列またはセルを結合する | 数式なしのラウンド ... | |
スーパールックアップ: 複数の基準の VLookup | 複数の値の VLookup | 複数のシートにわたる VLookup | ファジールックアップ .... | |
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する | 依存関係のドロップダウン リスト | 複数選択のドロップダウンリスト .... | |
列マネージャー: 特定の数の列を追加する | 列の移動 | Toggle 非表示列の表示ステータス | 範囲と列の比較 ... | |
注目の機能: グリッドフォーカス | デザインビュー | ビッグフォーミュラバー | ワークブックとシートマネージャー | リソースライブラリ (自動テキスト) | 日付ピッカー | ワークシートを組み合わせる | セルの暗号化/復号化 | リストごとにメールを送信する | スーパーフィルター | 特殊フィルター (太字/斜体/取り消し線をフィルター...) ... | |
上位 15 のツールセット: 12 テキスト ツール (テキストを追加, 文字を削除する、...) | 50+ チャート 種類 (ガントチャート、...) | 40+ 実用的 式 (誕生日に基づいて年齢を計算する、...) | 19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...) | 12 変換 ツール (数字から言葉へ, 通貨の換算、...) | 7 マージ&スプリット ツール (高度な結合行, 分割セル、...) | ... もっと |
Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。 最も必要な機能を入手するにはここをクリックしてください...
Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作業をはるかに簡単にします
- Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
- 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
- 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!