[[20181218030117]] 『取り消し線が認識されない』(unknown) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『取り消し線が認識されない』(unknown)

取り消し線を検知する処理を以下の様にしています。

If ActiveSheet.Cells(*, *).Font.Strikethrough = True Then
          
しかし、セルの書式設定でフォント-文字飾り-取り消し線のチェックボックスがレ点ではなく■で設定されていると、上記処理では取り消し線が認識されません。
複数のセルを選択してチェックボックスの設定がされてたり、されてなかったりすると設定の表示が■になるのはよく見るのですが、単独でセル選択して■になるのも不明な点です。

取り消し線の設定がレ点でも■でも検知できるようにしたいのですが、どのように変更したらよいでしょうか。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


確認してませんが、取り消し線がセル内の全体ではなく、一部の文字列にしか適用されていないのでは?

1文字ずつ切り出して確認すればできるとおもいますが、逆に条件をFalseでなければ処理する としてもできるのかもしれないです(ちょっと時間がないので未確認)

(もこな2) 2018/12/18(火) 07:56


問題のセル中の文字全ての書式設定を確認したところ、全て以下の設定でした。
フォント名 :MS Pゴシック
スタイル  :標準
サイズ   :11
標準フォント:チェックなし
文字飾り  :取り消し線(レ点でチェックあり)

しかし、セル選択時の書式設定は以下の様に表示されます
フォント名 :MS Pゴシック(見出し)
スタイル  :標準
サイズ   :  (選択なし)
標準フォント:■でチェックあり
文字飾り  :取り消し線(■でチェックあり

文字全て書式設定は同じなのですが、なぜかセル選択時の書式設定と違っていました。
又、セル内の文字を全て消去して、セルの書式設定を確認すると文字で設定されていた
書式設定(取り消し線(レ点でチェックあり))になります。

(unknown) 2018/12/19(水) 04:14


>問題のセル中の文字全ての書式設定を確認したところ
いや、そうでなくて、たとえば、
「あああいいいううう」
という文字列のうち、"いいい"のところだけ取り消し線が入ってませんか?ってことです。

問題のセルを選択(アクティブに)してから、イミディエイトに下記を入力して、なんと表示されるか確認してください。

 ?ActiveCell.Font.Strikethrough

 取り消し線が
   一切設定されていない → False
   一部設定されている  →  Null
   全部に設定されている → True

となりませんか?

そのうえで、nullを条件分岐に使う方法ですが、私にはよくわからないです。
とりあえず、こんな感じでよければ目的は達成できそうですが。。

    Sub テスト()
        Dim i As Integer

        For i = 1 To 5
            With Cells(i, "B")
                Select Case True
                    Case .Value = ""
                        Debug.Print .Address(0, 0) & "セルはブランク"

                    Case IsNull(.Font.Strikethrough)
                        Debug.Print .Address(0, 0) & "セルは一部に取り消し線の設定あり"

                    Case .Font.Strikethrough
                        Debug.Print .Address(0, 0) & "セルは取り消し線の設定あり"

                    Case Else
                        Debug.Print .Address(0, 0) & "セルは取り消し線なし"
                End Select
            End With
        Next i

(もこな2) 2018/12/19(水) 11:40


回答が遅くなり申し訳ありません。

 ?ActiveCell.Font.Strikethroughをイミディエイトウィンドウで実施したところ、
問題セルはNullとなりました。
プログラムの方もIsNullを使って、取り消し線チェックが■でも検知することができました。
無事解決です。大変ありがとうございました。

(unknown) 2018/12/21(金) 03:05


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.