#308 | テキストボックス内の検索文字列を反転表示する方法 | フォーム、VBA | |
エディタやワープロの検索機能と同様に、テキストボックス内の文字列(特にメモ型の長い文字列)から指定の文字列を検索、さらに見つかった文字列を反転表示する方法です。 次の例では、フォームに"txt検索キーワード"という名前のテキストボックスを配置し、ここに検索するキーワードを入力します。また、"cmd検索"というコマンドボタンを配置し、このボタンをクリックすることによって、テキストボックス"メモ"内の先頭からキーワードの検索が実行されます。さらに、"cmd次を検索"という名前のコマンドボタンによって、前回見つかった位置以降の範囲に対して検索をかけます。 文字列内から特定の文字を探すには、「InStr」関数を使います。これによって、検索対象の文字列全体の中での検索キーワードの位置が返されます(見つからない場合はゼロが返されます)。 また、テキストボックスコントロールの「SelStart」プロパティと「SelLength」プロパティを組み合わせることで、任意の位置(SelStart)から指定文字数分(SelLength)の文字列範囲を選択することができます。範囲選択することによって自動的に反転表示となります。 Option Compare Database
Option Explicit Private pstrKeyWord As String Private pintPos As Integer Private pintStartPos As Integer Private Sub cmd検索_Click() '[検索]ボタンクリック時 '検索するキーワードを取得 pstrKeyWord = Me!txt検索キーワード '検索開始位置を設定 pintStartPos = 1 'テキストボックス内の文字列を先頭から検索 pintPos = InStr(pintStartPos, Me!メモ, pstrKeyWord) If pintPos > 0 Then '見つかったときはその範囲を選択して反転状態にする With Me!メモ .SetFocus .SelStart = pintPos - 1 .SelLength = Len(pstrKeyWord) End With '[次を検索]に備えて検索開始位置を進める pintStartPos = pintPos + Len(pstrKeyWord) Else '見つからなかったとき Beep MsgBox pstrKeyWord & " は見つかりませんでした!", _ vbOKOnly + vbInformation End If End Sub Private Sub cmd次を検索_Click() '[次を検索]ボタンクリック時 '前回の続きからテキストボックス内を検索 pintPos = InStr(pintStartPos, Me!メモ, pstrKeyWord) If pintPos > 0 Then '見つかったときはその範囲を選択して反転状態にする With Me!メモ .SetFocus .SelStart = pintPos - 1 .SelLength = Len(pstrKeyWord) End With '[次を検索]に備えて検索開始位置を進める pintStartPos = pintPos + Len(pstrKeyWord) Else '見つからなかったとき Beep MsgBox pstrKeyWord & " は見つかりませんでした!", _ vbOKOnly + vbInformation End If End Sub [検索]ボタンをクリックしたとき 続けて[次を検索]ボタンをクリックしたとき |
|||
|
Copyright © T'sWare All rights reserved |