フィルターで検索する際に検索した文字列にハイライトを付けたいと思い、下記のリンクを参照にハイライトすることができました。
検索文字列をすべてハイライト表示で強調する
ですが、スペースを空けて複数の検索文字をしても複数の文字列にハイライトを付けるにはどうしたらいいでしょうか。
フィルターで検索する際に検索した文字列にハイライトを付けたいと思い、下記のリンクを参照にハイライトすることができました。
検索文字列をすべてハイライト表示で強調する
ですが、スペースを空けて複数の検索文字をしても複数の文字列にハイライトを付けるにはどうしたらいいでしょうか。
関数だけでは難しいので、VBAでユーザー定義関数を作成することになると思います。
標準モジュールに下記のような関数を作成します。
「感想リッチテキスト」のコントロールソースを下記のように設定します。
上記で一致した文字列の背景色は黄色になります。
もし、黄色以外にしたい場合は、第3引数に指定します。
例えば水色にしたい場合は下記になります。
=SearchHighlight([感想],[検索文字列],"#7FCCE3")
色は下記などを参照して # で始まる色コードで指定します。
WEBカラー見本一覧(基本色、セーフカラー)
ありがとうございます。
試してみましたが、ハイライトにはならず、検索した文字が繰り返しコピーされてしまいました。
検索文字列に”〇〇” スペース ”〇〇” という風にスペースを空けた文字にハイライトを付けたいのですが。。。
あっ、すみません。修正前のコードをアップしてしまいました。
s = Replace(s, i, "<font style='background-color:" & 色 & ";'>" & s & "</font>")
の部分を下記に修正してください。
s = Replace(s, i, "<font style='background-color:" & 色 & ";'>" & i & "</font>")
上の回答も修正しておきました。
複数検索文字がハイライトできました!ありがとうございます。
ですが、検索文字が増えるたび、スペースが一つ空くと1行改行されてしまいます。
おそらく検索文字列にスペースが入ってしまっているからだと思うのですが、
検索文字が3つあれば、2行改行されてしまうのですがそれはどうしたらいいでしょう?
検索文字が増えても改行せずにしたいです。
あっ、またまたすみません。
SearchHighlight関数を下記に修正してください。
思うとおりの動きができました!
ありがとうございます。
勉強になりました。
複数文字のハイライトができました。
ですが、たとえば"キズ"で調べたいとき、もしかしたら"キズ","きず"という言葉があるかも…ということで
"キズ","きず"で検索しましたら本来、キズで登録してるはずなのに、検索したらReplaceで置き換えられてしまい、きずという言葉になってしまいます。
漢字とカナは区別できているみたいですが、ひらがなとカタカナは区別しないみたいです。
ひらがなとカタカナを区別して検索する方法はありますか?
ちなみにStrCompも試してみましたが、”s”がフィールドのため、文章全体と検索文字列を比較しているため
一致しないという結果になってしまいました。
For Each i In Split(検索文字列)
If InStr(1, s, i, 0) > 0 Then
s = Replace(s, i, "" & i & "")
End If
Next
これでひらがな カナを区別できましたが、合っていますでしょうか。
InStr(1, s, i, 0) は最後の引数0でバイナリモードの比較になりますのでOKだと思いますが、
Replace関数の方でバイナリモードの比較にすればIf文は不要です。
replace関数でその通りにやってみましたが、ハイライトされませんでした...
また、ミスってました。たびたび済みません。
カンマが一つ足りませんでした。
下記に修正してください。