「vba 取り消し線 判定」
「EXCEL vba 取り消し線 判別」
のような検索で時折アクセスがあります。
Excel VBAで、セルに取り消し線が引かれているかどうかを判定するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。
セル全体に取り消し線が引かれているか判定するサンプルマクロ
以下のExcelマクロを実行すると、アクティブセルに取り消し線が引かれているかどうかを判定して、メッセージが表示されます。
If ActiveCell.Font.Strikethrough Then
MsgBox "取り消し線が引かれています。"
Else
MsgBox "アクティブセルの全体には、取り消し線が引かれていません。"
End If
End Sub
Font.Strikethroughで取り消し線が引かれているか判定できる
フォントを表すFontオブジェクトに用意されているStrikethroughプロパティを使うと、
取り消し線が引かれているかどうかを判定できます。
上記のマクロでは、ActiveCellプロパティで取得した
If ActiveCell.Font.Strikethrough Then
Rangeオブジェクトに用意されているFontプロパティで、Fontオブジェクトを取得しています。
If ActiveCell.Font.Strikethrough Then
Font.Strikethroughの戻り値がBooleanであることを確認しよう
Font.Strikethroughプロパティの戻り値は「As Variant」と定義されていますが、
実際にはBooleanであることを、拙著『いちばんやさしいExcel VBAの教本』や、『いちばんやさしいPowerPoint VBAの教本』でも繰り返し使用しているローカルウィンドウで確認できます。
以下のようなSubプロシージャを実行して、
Dim fon As Font
Set fon = ActiveCell.Font
Stop
End Sub
Stopステートメントで中断したら、ローカルウィンドウを表示して、オブジェクト変数fonを展開すると下図のような状態になっていることを目視確認できます。
セルの一部に取り消し線が引かれているかどうかの判定については、別記事で解説します。セルの一部でも取り消し線が引かれているかを判定するコードについての記事を公開しました(2022-06-28)。
最終更新日時:2022-06-28 15:15
Home » Excel VBA Rangeオブジェクト » セル全体に取り消し線が引かれているかVBAで判定する