← コード一覧へ戻る
基本UserForm

テキストボックス内を検索する

InStrで入力欄の中を検索し、最初に見つかった文字列を選択状態にします。

実行前に確認

  • InStrの位置は1始まり、SelStartは0始まりなので1を引きます。この例は最初の1か所だけを検索します。
  • コードと公式仕様を照合した学習用の例です。Excel実機での実行確認は行っていません。

1サンプルコード

'【貼付先:UserForm1 のコードモジュール】
Option Explicit

Private Sub UserForm_Initialize()
    Me.TextBox1.Value = "青りんごと赤りんご"
    Me.TextBox2.Value = "赤"
    Me.CommandButton1.Caption = "検索"
End Sub

Private Sub CommandButton1_Click()
    Dim word As String, position As Long
    word = CStr(Me.TextBox2.Value)
    If Len(word) = 0 Then
        MsgBox "検索する文字を入れてください。"
        Exit Sub
    End If
    position = InStr(1, CStr(Me.TextBox1.Value), word, vbTextCompare)
    If position = 0 Then
        MsgBox "見つかりませんでした。"
        Exit Sub
    End If
    With Me.TextBox1
        .SetFocus
        .SelStart = position - 1
        .SelLength = Len(word)
    End With
End Sub

図で見る文字位置を選択範囲へ

イメージ図

InStrで入力欄の中を検索し、最初に見つかった文字列を選択状態にします。

  1. 検索

    InStrで最初の一致を探す

  2. 変換

    位置から1を引いてSelStartへ

  3. 強調

    検索文字数をSelLengthへ

各操作は、このガイドに指定されたフォームのコードで行います。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。

  2. 2

    ツールボックスからTextBox1、TextBox2、CommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。

  3. 3

    UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。

  4. 4

    VBEでUserForm1を選び、F5でフォームを表示します。 「検索」をクリックします。TextBox2を「梨」に変更してもう一度検索します。

  5. 5

    最初はTextBox1の「赤」だけが選択され、「梨」では「見つかりませんでした。」と表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)