条件付き書式で、訂正線が引かれたセルを塗りつぶす

条件付き書式で、訂正線が引かれたセルを塗りつぶしたい。さて、どうしよう。
先日、職場で教わったのは、こんなやり方。

ユーザー定義関数を作成

まず、確認したいセルを引数として、訂正線が引かれている(True)か否(False)かを戻り値とするユーザー定義関数を作成する。

Function 訂正線有無(target_range As Range) As Boolean
    訂正線有無 = target_range.Font.Strikethrough
End Function

条件付き書式を設定

以下、3つの「うどん」セルに、条件付き書式を設定する。
f:id:Infoment:20190109213235p:plain

結果、文字が全て訂正線を引かれたセルのみ、塗りつぶしが発動した。
f:id:Infoment:20190109213551p:plain

一文字でも訂正線が含まれたら、容赦なく塗りつぶしたい。そんな場合は、ユーザー定義関数側を修正する。

Function 訂正線有無(target_range As Range) As Boolean
    Dim i As Long
        For i = 1 To Len(target_range.Value)
            If target_range.Characters(i, 1).Font.Strikethrough = True Then
                訂正線有無 = True
                Exit Function
            End If
        Next
End Function

↓ 結果 ↓
f:id:Infoment:20190109214127p:plain

今までだったら、Worksheet_Changeイベントで検知するぐらいしか思いつけなかった。なるほど、面白い!

参考まで。