アプリ版:「スタンプのみでお礼する」機能のリリースについて

条件付き書式で「赤」が設定されているかを調べたいのですが、
サポートされていないというエラーになってしまいます。

調べる方法を教えてください。
宜しくお願いします。

A 回答 (6件)

No3です。



>条件付き書式の条件1、2、3のどれに一致しているのかを調べたいのです
ですので、不明の条件付き書式を調べる方法の例をNo3に記しました。
まったく未知の状態から、これで処理するのは相当に面倒でしょう。
(既知の設定方法や条件であれば、さほどでもありませんけれど・・)

一方で、想像するところ、質問者様にはどのような条件付き書式が設定されているかは分かっているものと思いますので、その条件を直接判断するのが一番確実で簡単であるというのが、No3の後半の例です。
いろいろ設定されているので煩雑であるというのであれば、別法をNo2の後半に示してあります。

実態がどのようになっているのか不明なので、どのような対応が適切なのかはわかりかねますが、いずれかで解決できるものと想像します。
しかしながら、どうやら意味がほとんど通じていないようですので、読み直してみるか別の方の回答をお待ちください。
当方では、これ以上は同じことの繰り返しにしかなりませんので・・
    • good
    • 0
この回答へのお礼

ホントにしつこく済みませんでした。
読み直したら良く分かりました。
そして方向が見えました。
全く分からないので読めなかったのですね。
少しばかり分かりだしたら説明がスラスラ読めました。

お礼日時:2023/08/07 17:10

No.4です。


お恥ずかしいことに前回回答にタイプミスがありました。

VABのサンプルを作成してみしまた。・・・・(誤)
VBAのサンプルを作成してみしまた。・・・・(正)

お詫びして訂正いたします。
    • good
    • 0
この回答へのお礼

ありがとうございました。
トンデモナイです。

お礼日時:2023/08/07 17:10

>excel2003ではdisplayformatは使えないのでしょうか。


>条件付き書式で「赤」が設定されているかを調べたいのですが、
>サポートされていないというエラーになってしまいます。

ということなので、VABのサンプルを作成してみしまた。
当方にExcel2003の環境がないので、OfficeXPで検証したところ、一応希望の動作をするようです。条件付き書式が「数式」で設定されているという前提です。

Sub IsRedのマクロにオプションでショートカットキーを設定して実行すると選択中のセルが、条件付き書式の発動によって「赤」に塗られたか否かを判定します。

※但し、Excel2010で検証したところ、正しく動作しません。条件付き書式の指定範囲の左上隅のセルが赤ならどのセルを判定しても赤に判定されてしままうという症状がでます。これは数式による条件付き書式は「指定範囲の左上隅のセルの数式が参照される」という仕様のためだと考えられます。

Option Explicit

Sub IsRed()
Dim target_color As Variant
Call get_color(Selection, target_color)
If target_color = vbRed Then
MsgBox "赤に塗られています"
Else
MsgBox "赤に塗られていません"
End If
End Sub

Sub get_color(ByVal target As Range, target_color As Variant)
Dim i As Long
Dim formula As Variant
target_color = Empty
With target
.Activate
If .Count > 1 Then Exit Sub
If .FormatConditions.Count = 0 Then Exit Sub
For i = 1 To .FormatConditions.Count
formula = .FormatConditions(i).Formula1
If Evaluate(formula) Then
target_color = .FormatConditions(i).Interior.Color
Exit For
End If
Next
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
お手間を掛けました。
ただ、期待した動きをしませんでした。
原因は分かりません。
(基本的なことが分かっていないので)

お礼日時:2023/08/07 17:08

No2です。



No2は、条件式が不明の場合の調べ方の一般論を記したものです。
仮に、「3以上であれば~」が設定されているとして・・

 Range("B2").FormatConditions.Count
で、条件付き書式が設定されているかどうかを調べられます。
(0なら設定されていない。2以上なら複数設定されている)

設定の方法によっても異なりますが、
「セルの値を含む~~」で設定した場合、
 Range("B2").FormatConditions(1).Formula1
で、「=3」という条件が得られ、
 Range("B2").FormatConditions(1).Operator
の「7」(=xlGreaterEqual)と併せて3以上ということが判断できます。

「数式を利用して~~」で設定した場合には、
 Range("B2").FormatConditions(1).Formula1
で、条件式となっている「=B1>=3」を取得できます。
(こちらの場合は、.Operator属性は存在しません。参照しようとするとエラーになります)
(こちらであれば、条件式をそのまま評価すれば結果が得られます。)

とは言え、条件付き書式の設定方法はかなり複雑です。
(セル範囲で設定している場合、直接の式ではない式が返されるとか、条件付き書式が複数設定されている場合などなど)
ですので、何が設定されているのかまったくわからない状態から調べようとすると、相当に面倒なことになります。

※ リンク先を見てわからないようなら、やめておいた方が宜しいと思います。


>セルB2に条件つき書式で、このセルが「3以上であれば赤くする」と設定してあります。
もしも、それがわかっているのなら、
 If Range("B2").Value >= 3 Then
で直接判断してしまった方が、遥かに簡単でしょう。
複雑な設定になっている場合には、No2の後半の方法が宜しいと思います。
    • good
    • 0
この回答へのお礼

何回もお手間を取らせてしまい、申し訳ありません。
2回目のお礼に余計な例示を書いてしまったので分からなくさせてしまいました。
一にも二にも、やりたいことは、
2番目のお礼の上の方に書きましたが、
「条件付き書式の条件が成立しているか」を調べたいのです。

例示で「赤かを調べたい」と書いてしまったので混乱させました。
この際、具体的に書かないとまた誤りを繰り返すので書かせて頂きます。

今やっていることは、ユーザーに質問を出し、
その回答によってそれぞれの回答に対する説明をする。
ということでして、毎回質問の内容は変わります。
ただ、回答に対する結果説明は同じなので、
条件付き書式の条件1、2、3のどれに一致しているのかを調べたいのです。

安易に質問してしまい申し訳ありませんでした。
これで分からなければ諦めます。
宜しくお願いいたします。

お礼日時:2023/08/07 08:51

No1です。



>「教えてください」はエラーの原因ではなく、
>実際に「赤が設定されているか」の調べ方です。
条件式が成立しているかどうかを調べれば良いのではないでしょうか?
条件式が一律ではない場合は、セルのFormatConditionsを調べれば条件式を取得することが可能です。
https://learn.microsoft.com/ja-jp/office/vba/api …

とは言え、種類が一つなら簡単ですが、複数設定されていたり、調査対象範囲が広いとそれなりに面倒なので、シート上の空きセル(非表示セルでも良い)に事前に条件式を設定しておいて、VBAからはそちらを参照するという方法も考えられます。
    • good
    • 0
この回答へのお礼

何回も有難うございます。
誠に申し訳ありません。
貼っていただいたリンクを読みましたが、
設定方法は分かったのですが、調べ方が分かりません。

まさにご指摘のように、
>条件式が成立しているかどうかを調べれば良いのではないでしょうか?
を調べたいのですがそれが分からないでいます。

しつこくて申し訳ありませんが、
以下のケースについて具体的に教えていただければ嬉しいのですが。
例示;
セルB2に条件つき書式で、このセルが「3以上であれば赤くする」と設定してあります。
このB2セルが赤い(条件つき書式が成立している)かを調べたいのです。

宜しくお願いします。

お礼日時:2023/08/06 13:46

こんばんは



>サポートされていないというエラーになってしまいます。
なので、多分、使えないものと想像されます。

>調べる方法を教えてください。
VBAエディター画面で、オブジェクトブラウザ表示にして、Rangeクラスのメンバーを調べてみてください。
PropertyにDisplayFormatがなければ、サポートされていないってことです。
(ちなみに、Excel2019では表示されます。)
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
質問の仕方が悪かったですね、
「教えてください」はエラーの原因ではなく、
実際に「赤が設定されているか」の調べ方です。

エラーは、そのそもコーディングの段階で、
選択肢が出てこなかったので無いと思っていました。

お礼日時:2023/08/06 06:34

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