[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『取り消し線が認識されない』(unknown)
取り消し線を検知する処理を以下の様にしています。
If ActiveSheet.Cells(*, *).Font.Strikethrough = True Then
しかし、セルの書式設定でフォント-文字飾り-取り消し線のチェックボックスがレ点ではなく■で設定されていると、上記処理では取り消し線が認識されません。
複数のセルを選択してチェックボックスの設定がされてたり、されてなかったりすると設定の表示が■になるのはよく見るのですが、単独でセル選択して■になるのも不明な点です。
取り消し線の設定がレ点でも■でも検知できるようにしたいのですが、どのように変更したらよいでしょうか。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
1文字ずつ切り出して確認すればできるとおもいますが、逆に条件をFalseでなければ処理する としてもできるのかもしれないです(ちょっと時間がないので未確認)
(もこな2) 2018/12/18(火) 07:56
しかし、セル選択時の書式設定は以下の様に表示されます
フォント名 :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.