Home » Excel VBA Rangeオブジェクト » セル全体に取り消し線が引かれているかVBAで判定する

セル全体に取り消し線が引かれているかVBAで判定する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2205 ビルド15225.20204 Microsoft Store)

「vba 取り消し線 判定」
「EXCEL vba 取り消し線 判別」
のような検索で時折アクセスがあります。

Excel VBAで、セルに取り消し線が引かれているかどうかを判定するには、どのようなコードを書けばいいのかを探していらしたのでしょうか。

[スポンサードリンク]

セル全体に取り消し線が引かれているか判定するサンプルマクロ

以下のExcelマクロを実行すると、アクティブセルに取り消し線が引かれているかどうかを判定して、メッセージが表示されます。

Sub セル全体に取り消し線が引かれているか判定する()
 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プロシージャを実行して、

Sub Fontオブジェクトを確認する()
 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で判定する

「Excel VBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.