テキストボックス内を検索する
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で入力欄の中を検索し、最初に見つかった文字列を選択状態にします。
検索
InStrで最初の一致を探す
変換
位置から1を引いてSelStartへ
強調
検索文字数をSelLengthへ
各操作は、このガイドに指定されたフォームのコードで行います。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsmで保存し、Alt+F11→[挿入]→[ユーザーフォーム]で、名前がUserForm1の空のフォームを用意します。各例は別々に試します。
- 2
ツールボックスからTextBox1、TextBox2、CommandButton1を各1個を置き、各コントロールの[(Name)]が記載どおりか確認します。
- 3
UserForm1を右クリック→[コードの表示]を開き、掲載コード全体をフォームのコードモジュールへ貼り付けます。標準モジュールには貼り付けません。
- 4
VBEでUserForm1を選び、F5でフォームを表示します。 「検索」をクリックします。TextBox2を「梨」に変更してもう一度検索します。
- 5
最初はTextBox1の「赤」だけが選択され、「梨」では「見つかりませんでした。」と表示されます。