幼稚園時代「何組」でしたか?

セルの中の文字列において、複数の色や複数の文字高が混在している場合、
C = Range("A1").Font.Color
S = Range("A1").Font.Size
のようなことをするとNullが返ってエラーになるのですが、
そのセルでデフォルト設定されている文字色や文字高を取得する方法はありませんか?

A 回答 (2件)

こんにちは



確かにご指摘のようになりますね。
どこかに情報は持っているはずと思いますが、ざっと探してみても普通にアクセスできる範囲には見当たらないようでした。


若干の手間はかかりますが、苦肉の策として、以下のような方法でも良ければ取得は可能です。
 Set tmp = 適当な空きセルを指定
 Range("A1").Copy tmp
 tmp.ClearContents
とした上で、tmpセルに対してご質問のような処理を行えば取得可能です。
(「書式をペースト」でも同様に可能ですが、CutCopyModeが残ります。)

※ 空きセルを使わずに、クリップボードから直接書式を参照する方法もあるのではないかと思いましたが、APIを使用する必要があるのと、クリップボード内の書式は別の専用書式になっているらしいので、こちらに関しては調べていません。
    • good
    • 1
この回答へのお礼

探って頂きありがとうございます。
空きセル利用の方法で確認できました。
使わせていただきたいと思います。
セル内で個別の書式が統一された時点でセルのデフォルト値が上書きされるみたいですね。

お礼日時:2024/09/12 07:37

取得した値をどう利用するか、が問題になりますが。



エラーにならなければ良いだけなら
変数を Variant で宣言して下さい

デフォルト設定は無いと思われますが、
セルの全文字を削除すると 1文字目の設定になるようです。

その値を取得したいのなら

Dim C As Variant
C = Range("A1").Font.Color
If IsNull(C) Then
C = Range("A1").Characters(1,1).font.Color
Ens If
    • good
    • 1
この回答へのお礼

ありがとうございます。
強調の目的で部分的に着色されていたりするものを、そのセルのデフォルト設定の書式で統一させる目的でした。
例えば、最新版で更新した部分の文字だけを赤字強調にしてるものを、次の版では黒くするとか。
セルの中で強調してない固定文字があれば、教えていただいた方法を使えそうです。

お礼日時:2024/09/12 07:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A