街中で見かけて「グッときた人」の思い出

条件付き書式の真偽を判定したく、
調べていて、下記を探しました。

Sub test9()
If ActiveCell.FormatConditions.Count > 0 Then
MsgBox "条件付き初期の設定があります。"
If Evaluate(ActiveCell.FormatConditions(1).Formula1) Then
MsgBox "条件を満足しています。"
Else
MsgBox "条件は満足していません。"
End If
Else
MsgBox "条件付き書式の設定はありません。"
End If
End Sub

上手く機能しているので、いろいろなセルを指定したく、
このコードの「ActiveCell」を「cells(r,c)」に置き換えたのですが、
結果がおかしく、念の為に下記を書いてみました。

Sub test5()
MsgBox Cells(11, 8).Value
MsgBox Range("G11").Value
End Sub

全く何処の中身かわからない数字が表示されました。
理由と、対処方法を教えて下さい。
宜しくお願いします。

関係ないと思いますが、excel2003です。

質問者からの補足コメント

  • よく読ませて頂きました。
    ブックマークしておきました。
    2番の方のお礼にかきましたが、問題なく動いています。

    No.3の回答に寄せられた補足コメントです。 補足日時:2024/09/12 06:41

A 回答 (3件)

横からお邪魔します。



MsgBox Cells(r, c).FormatConditions(1).Formula1

でセルの条件を確認してみてください。
想定しているものと違う条件になっているのではないでしょうか。

理由はこちらを参考にどうぞ
https://www.moug.net/tech/exvba/0110009.html
    • good
    • 0
この回答へのお礼

早速ありがとうごっざいます。
解決しました。

貼っていただいたリンクに出ていた通りでズバリでした。
作業の性質上、$を外して広範囲にコピーした広場を参照しています。
この命令を使う前に、cells(r,c).select を入れて解決です。

全く気が回っていませんでした、
これでまた再開できます。
深謝です。

お礼日時:2024/09/11 14:58

条件の数式に相対参照が含まれるなら下記のページが参考になりそうです。


https://www.moug.net/tech/exvba/0110018.html
この回答への補足あり
    • good
    • 0
この回答へのお礼

わざわざありがとうございました。

お礼日時:2024/09/11 16:18

こんにちは



>「ActiveCell」を「cells(r,c)」に置き換えたのですが、
>結果がおかしく~~
そのようなことはないはずと思いますが・・・?

>念の為に下記を書いてみました。
ご提示の
 >MsgBox Cells(11, 8).Value
 >MsgBox Range("G11").Value
は異なるセルの値を参照していますけれど、意図的ですか?
前者はH11セル、後者はG11セルの参照になります。

>全く何処の中身かわからない数字が表示されました。
実際のセルの値がどうなっていて、表示値がどうなっているのでしょうか?
例えば、セルの表示が時刻や日時の場合には、取得されるのはシリアル値と言われる日付型の数値になるので、表示値とは異なる数値になったりします。
(上例の場合は、セルの書式を「標準」にした際の表示値になります)
    • good
    • 0
この回答へのお礼

早速有難うございます。
まず、8とGの違い、私の間違いでした。
たまたまHの欄が大きな桁で####で埋まっていたため、
とんでもないせるかと思いこんでしまいました。
正したところ、この表現では問題なく機能しています。

ただ、本題の方は誤りがないと思います。
以下のとおりです。

Sub test92()
Dim r As Long
Dim c As Long
r = 11
c = 8
MsgBox Cells(r, c).Value
If Cells(r, c).FormatConditions.Count > 0 Then
MsgBox "条件付き初期の設定があります。"
If Evaluate(Cells(r, c).FormatConditions(1).Formula1) Then
MsgBox "条件を満足しています。"
Else
MsgBox "条件は満足していません。"
End If
Else
MsgBox "条件付き書式の設定はありません。"
End If
End Sub

ここに追加した
MsgBox Cells(r, c).Value
は正しく値を表示しています。
かつ、書式の設定有無については正しく判定されているように思います。
結果の満足(真偽)が期待した結果を返さないように見えます。

お礼日時:2024/09/11 13:06

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

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


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