
No.4ベストアンサー
- 回答日時:
残念ながら、No.1さんの示されたURLでの解説されているVBAではDisplayFormatプロパティを使用していないため、また、No.2さんの回答にある「4.0マクロ関数」ではセル自身の背景色を判別するため、いずれも「条件付き書式」による色付けを判別できない気がします。
つまり、「条件付き書式」による色付けを含めて判別するにはDisplayFormatプロパティを用いるということになるのですが、DisplayFormatプロパティは、普通の方法ではVBAの仕様により、「プロシージャでは使えるが、ユーザー定義関数の中では使用できない」と聞いています。
従って、No.3さんの方法も結果的にNGということになるのではないかと思います。
ということで、
No.3さんのVBAを修正して、
Function ColorCount(Targetrng As Range) As Long
Dim Rng As Range
Dim i As Long
Application.Volatile
i = 0
For Each Rng In Targetrng
If Evaluate("PeekColor(" & Rng.Address & ")") <> RGB(255, 255, 255) Then '無理やり文字列を生成してからEvaluateでユーザー定義関数「PeekColor」を計算させる。DisplayFormatユーザー関数内使用制限を回避。
Debug.Print Rng.Address(0, 0)
'Debug.Print Rng.DisplayFormat.Interior.Color 'この行をコメントアウトしないと#Value!が返る。普通の方法ではDisplayFormatはユーザー定義関数の中では使用できないという証左?
i = i + 1
End If
Next
Debug.Print i
ColorCount = i
End Function
Function PeekColor(Rng As Range) As Long
PeekColor = Rng.DisplayFormat.Interior.Color
Debug.Print PeekColor
End Function
というVBAを標準モジュールとして記述し、色の付いたセル数のカウントを表示したいセルに「=ColorCount(A1:G20)」のように、
=ColorCount(対象範囲)
という数式を記述すれば、そこに対象範囲の色の付いたセル数が表示されるはずです。
No.3
- 回答日時:
どういう使い方をするか不明だったので、どっちに転んでも何とかなるように。
Function ColorCount()
Dim rng As Range
Dim i As Long
For Each rng In Selection
If rng.DisplayFormat.Interior.Color <> RGB(255, 255, 255) Then
Debug.Print rng.Address(0, 0), rng.DisplayFormat.Interior.Color
i = i + 1
End If
Next
Debug.Print i
ColorCount = i
End Function
No.2
- 回答日時:
Excelには、塗りつぶしなどの書式をカウントする関数はありません。
№1さんがご紹介のリンク先での方法以外には4.0マクロ関数を使う方法などがあります。
http://miyahorinn.fc2web.com/faq/faq030.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- その他(Microsoft Office) EXCELのセルへの色づけ 2 2023/06/07 01:22
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) エクセルで条件付き書式を使わずにセルの文字の色を変える方法を教えて下さい 8 2023/07/28 01:15
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- その他(Microsoft Office) エクセルで、土日や祝祭日に色をつけるには?Part2 5 2022/05/05 09:51
- その他(Microsoft Office) エクセル 表の移動 2 2023/04/05 20:29
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル 条件付き書式で色をつけたセルの個数を数えたいです。 ネットで調べてcountcolorAも
Excel(エクセル)
-
昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ
Visual Basic(VBA)
-
VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカウントできる、VB
Visual Basic(VBA)
-
-
4
VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc
Visual Basic(VBA)
-
5
条件付き書式の色付きセルのカウント方法について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の数字等を表示...
-
E列のセルに数値が入れば(空白...
-
エクセルで1以上は全て1にするには
-
Excelの条件付き書式にて空白セ...
-
【Excel】条件付き書式で 0では...
-
条件付き書式で、結果が1行ずれる
-
エクセルでシート参照する場合...
-
エクセルで日付を入力したらカ...
-
エクセルの条件付き書式で*を...
-
条件付き書式で太罫線を引く方法
-
Excelのテキストボックスでフォ...
-
エクセルで色分けしたいのです...
-
Excelの条件付き書式についての...
-
一つ上のセルと同じセルに色を...
-
赤い文字を省いてカウント
-
エクセル文字列の日付を日付け...
-
Excel 複数のセルが一致すると...
-
エクセルで未入力セルを警告す...
-
excel VBAの構文の内容を訳して...
-
エクセルの塗りつぶし色の種類
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
E列のセルに数値が入れば(空白...
-
条件付き書式で、結果が1行ずれる
-
エクセルで特定の数字等を表示...
-
条件付書式で「=#N/A」に色を付...
-
Excel にて条件付き書式の色に...
-
エクセルの枠の中の文字が青文...
-
【Excel】条件付き書式で 0では...
-
Excel 複数のセルが一致すると...
-
Excelの条件付き書式にて空白セ...
-
エクセルで1以上は全て1にするには
-
セル結合させてるときの 条件...
-
条件付き書式で太罫線を引く方法
-
エクセルでシート参照する場合...
-
エクエルで隣のセルの文字が赤...
-
ピボットテーブルオプション「...
-
エクセル内で複数の文字(50個ぐ...
-
【エクセル】シフトで○が6個以...
-
Excel 条件付書式 今日より3日...
-
【エクセル】今日の日付に赤枠...
-
エクセルで日付を入力したらカ...
おすすめ情報