Note: The other languages of the website are Google-translated. Back to English
ログイン  \/ 
x
or
x
今すぐ登録  \/ 
x

or

Excelで入力するときにテキストボックスをオートコンプリートするにはどうすればよいですか?

既定では、Excelは現在のワークシートのセルに入力した内容を記憶し、次に関連する頭文字を新しいセルに入力するときにこのコンテンツをオートコンプリートできます。 ただし、ワークシートに入力したすべてのコンテンツをテキストボックス(ActiveXコントロール)でオートコンプリートする場合は、どうすればよいでしょうか。 この記事では、内部に頭文字を入力するときにテキストボックスをオートコンプリートするのに役立つVBAメソッドを提供します。

VBAコードで入力するときにテキストボックスをオートコンプリートする

OfficeタブOfficeでタブ付きの編集と閲覧を有効にし、作業をはるかに簡単にします...
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
  • 何でも再利用: 最もよく使用される、または複雑な数式、グラフなどをお気に入りに追加して、後ですぐに再利用できます。
  • 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

ノート:コードでは、 ListBox1Textbox1 ワークシートに挿入したリストボックスとテキストボックスの名前です。

5。 プレス 他の + Q 終了するためのキー Microsoft Visual Basic for Applications 窓。

6.をクリックしてデザインモードをオフにします ディベロッパー > デザインモード ワークシートで。

7.次に、別のワークシートに移動してから、前のワークシートに戻ってVBAコードを有効にします。

今後。 テキストボックスに最初の文字を入力すると、ワークシートに入力したその文字で始まるすべてのテキストが、テキストボックスの右側にあるリストボックス内に一覧表示されます。 必要なものをダブルクリックして、テキストボックスに入力してください。 スクリーンショットを参照してください:

ノート:あなたは Up or 値下がり 矢印キーを押してリストボックス内のすべてのオートコンプリートテキスト間を移動し、 入力します 必要なものをテキストボックスに入力するためのキー。


関連記事:


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    suprio · 2 years ago
    Why would anyone go for writing a script when there are simpler ways to get a dropdown list???