Microsoft Access 掲示板

検索文字列にハイライト 検索文字が複数に対応したい / 1

12 コメント
views
4 フォロー
1
hatena 2022/09/30 (金) 18:32:33 修正

関数だけでは難しいので、VBAでユーザー定義関数を作成することになると思います。

標準モジュールに下記のような関数を作成します。

Public Function SearchHighlight(フィールド, 検索文字列, 色 As String) As String
    Dim s As String
    s = フィールド
    If s = "" Then Exit Function
    If Nz(検索文字列, "") = "" Then
        SearchHighlight = s
        Exit Function
    End If
    Dim i
    For Each i In Split(検索文字列)
        s = Replace(Nz("<p>" & s & "</p>", ""), Chr(13), "</p><p>")
        s = Replace(s, i, "<font style='background-color:" & 色 & ";'>" & i & "</font>")
    Next
    SearchHighlight = s
End Function

「感想リッチテキスト」のコントロールソースを下記のように設定します。

=SearchHighlight([感想],[検索文字列])

上記で一致した文字列の背景色は黄色になります。

もし、黄色以外にしたい場合は、第3引数に指定します。
例えば水色にしたい場合は下記になります。

=SearchHighlight([感想],[検索文字列],"#7FCCE3")

色は下記などを参照して # で始まる色コードで指定します。

WEBカラー見本一覧(基本色、セーフカラー)

通報 ...
  • 2
    チョコラブ 2022/10/01 (土) 08:00:50 9af1b@d60f0 >> 1

    ありがとうございます。

    試してみましたが、ハイライトにはならず、検索した文字が繰り返しコピーされてしまいました。
    検索文字列に”〇〇” スペース ”〇〇” という風にスペースを空けた文字にハイライトを付けたいのですが。。。