
No.5ベストアンサー
- 回答日時:
No3です。
>条件付き書式の条件1、2、3のどれに一致しているのかを調べたいのです
ですので、不明の条件付き書式を調べる方法の例をNo3に記しました。
まったく未知の状態から、これで処理するのは相当に面倒でしょう。
(既知の設定方法や条件であれば、さほどでもありませんけれど・・)
一方で、想像するところ、質問者様にはどのような条件付き書式が設定されているかは分かっているものと思いますので、その条件を直接判断するのが一番確実で簡単であるというのが、No3の後半の例です。
いろいろ設定されているので煩雑であるというのであれば、別法をNo2の後半に示してあります。
実態がどのようになっているのか不明なので、どのような対応が適切なのかはわかりかねますが、いずれかで解決できるものと想像します。
しかしながら、どうやら意味がほとんど通じていないようですので、読み直してみるか別の方の回答をお待ちください。
当方では、これ以上は同じことの繰り返しにしかなりませんので・・
ホントにしつこく済みませんでした。
読み直したら良く分かりました。
そして方向が見えました。
全く分からないので読めなかったのですね。
少しばかり分かりだしたら説明がスラスラ読めました。
No.4
- 回答日時:
>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
ありがとうございます。
お手間を掛けました。
ただ、期待した動きをしませんでした。
原因は分かりません。
(基本的なことが分かっていないので)
No.3
- 回答日時:
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の後半の方法が宜しいと思います。
何回もお手間を取らせてしまい、申し訳ありません。
2回目のお礼に余計な例示を書いてしまったので分からなくさせてしまいました。
一にも二にも、やりたいことは、
2番目のお礼の上の方に書きましたが、
「条件付き書式の条件が成立しているか」を調べたいのです。
例示で「赤かを調べたい」と書いてしまったので混乱させました。
この際、具体的に書かないとまた誤りを繰り返すので書かせて頂きます。
今やっていることは、ユーザーに質問を出し、
その回答によってそれぞれの回答に対する説明をする。
ということでして、毎回質問の内容は変わります。
ただ、回答に対する結果説明は同じなので、
条件付き書式の条件1、2、3のどれに一致しているのかを調べたいのです。
安易に質問してしまい申し訳ありませんでした。
これで分からなければ諦めます。
宜しくお願いいたします。
No.2
- 回答日時:
No1です。
>「教えてください」はエラーの原因ではなく、
>実際に「赤が設定されているか」の調べ方です。
条件式が成立しているかどうかを調べれば良いのではないでしょうか?
条件式が一律ではない場合は、セルのFormatConditionsを調べれば条件式を取得することが可能です。
https://learn.microsoft.com/ja-jp/office/vba/api …
とは言え、種類が一つなら簡単ですが、複数設定されていたり、調査対象範囲が広いとそれなりに面倒なので、シート上の空きセル(非表示セルでも良い)に事前に条件式を設定しておいて、VBAからはそちらを参照するという方法も考えられます。
何回も有難うございます。
誠に申し訳ありません。
貼っていただいたリンクを読みましたが、
設定方法は分かったのですが、調べ方が分かりません。
まさにご指摘のように、
>条件式が成立しているかどうかを調べれば良いのではないでしょうか?
を調べたいのですがそれが分からないでいます。
しつこくて申し訳ありませんが、
以下のケースについて具体的に教えていただければ嬉しいのですが。
例示;
セルB2に条件つき書式で、このセルが「3以上であれば赤くする」と設定してあります。
このB2セルが赤い(条件つき書式が成立している)かを調べたいのです。
宜しくお願いします。
No.1
- 回答日時:
こんばんは
>サポートされていないというエラーになってしまいます。
なので、多分、使えないものと想像されます。
>調べる方法を教えてください。
VBAエディター画面で、オブジェクトブラウザ表示にして、Rangeクラスのメンバーを調べてみてください。
PropertyにDisplayFormatがなければ、サポートされていないってことです。
(ちなみに、Excel2019では表示されます。)
早速ありがとうございます。
質問の仕方が悪かったですね、
「教えてください」はエラーの原因ではなく、
実際に「赤が設定されているか」の調べ方です。
エラーは、そのそもコーディングの段階で、
選択肢が出てこなかったので無いと思っていました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
- Excel(エクセル) Excel この式はどんな意味でしょうか。。。 4 2023/01/14 22:30
- Android(アンドロイド) MacroDroidでUSB設定の変更がしたいです。 AQUOS SENSE4 Basic を使用し 1 2022/07/30 11:20
- Excel(エクセル) [条件付き書式]の設定順の変更は可能か? 4 2022/12/07 10:37
- Visual Basic(VBA) エクセル VBA 条件によるセル点滅 お詳しい方 ご教授をお願いします。 Excelファイルにて 現 1 2022/11/03 15:53
- Excel(エクセル) エクセルの数式で教えてください。 3 2023/04/17 09:25
- Visual Basic(VBA) vbaで条件付き書式を設定したときの適用範囲について 1 2023/07/17 23:14
- Excel(エクセル) エクセルで重複データを行ごとに抽出したい 4 2022/12/05 08:18
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Excel(エクセル) Excel 参照元の値を参照したい 1 2022/08/20 18:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スケッチスタイルの有効化
-
ワードで棒線が直接文章に入る...
-
差し込み印刷で反映されないフ...
-
Excelの集計がSUM関数で、1円...
-
「テーブルとして書式設定」で...
-
箇条書きの記号の色が勝手に変わる
-
【エクセル】コメントの初期(...
-
Access→Excelへエクスポートす...
-
WORD 書式の設定ではない黄色の...
-
【EXCEL2003】セルの書式設定で...
-
C言語のprintf()関数の「f」の意味
-
箇条書きや段落番号の行頭文字...
-
wordでの書式変更が全てに適用...
-
スタイルで網掛けを文字を対象...
-
【エクセル】バブルチャート上...
-
スタイル同じなのに表示が異なる
-
エクセルで和暦表示の桁合わせ...
-
エクセル 電話番号に市外局番...
-
Excel グラフの軸に「表示単位...
-
パワーポイントの表へのテキス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スケッチスタイルの有効化
-
差し込み印刷で反映されないフ...
-
ワードで棒線が直接文章に入る...
-
Excelの集計がSUM関数で、1円...
-
箇条書きの記号の色が勝手に変わる
-
【エクセル】コメントの初期(...
-
「テーブルとして書式設定」で...
-
Access→Excelへエクスポートす...
-
エクセルで和暦表示の桁合わせ...
-
OpenOfficeの用紙のサイズ変更で
-
WORD 書式の設定ではない黄色の...
-
【EXCEL2003】セルの書式設定で...
-
スタイル同じなのに表示が異なる
-
C言語のprintf()関数の「f」の意味
-
課題で、Wordを使って提出する...
-
Open office Writerで余白の調整
-
箇条書きや段落番号の行頭文字...
-
WORDで囲み線の検索
-
エクセル 電話番号に市外局番...
-
教えてください! アクセスの書...
おすすめ情報