
あるセル範囲にある特定色の数をカウントしたいのですが、どのようのマクロを組めばよろしいでしょうか?
たとえば、下記のURLの場合にある赤色をカウントしたい場合、具体的にどのようにマクロ組めばよいですか?
http://excel-magic.com/?no=42
実際に使いたい色は、2007から採用された色を基本として使用したいので、カラーコードの一覧表があればと思うのですが、ありますか?
塗りつぶし色
白、背景1、黒+基本色15% ⇒ -0.149998474074526
白、背景1、黒+基本色35% ⇒ -0.349986266670736
このマイナス数値がカラーコードになるんでしょうか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんばんは。
リンク先のコードは、雑なコードですから、あまり参考にすべきではありません。
少なくとも、
>Application.Volatile
Volatileを入れたところで、あまり意味がありません。これを入れなければ、不揮発性になりますが、いずれにしても、再計算させるには、
ColorCountの数式のセルに対して、F2->Enter や、
ブックに対して、Ctrl+Alt+ F9(または、Ctrl+Alt+ Shift +F9)のショートカットを使います。
>カラーコードの一覧表があればと思うのですが、ありますか?
あるのかもしれませんが、必要とあれば、ご自分で、マクロで一覧を作るのが早いと思います。
>このマイナス数値がカラーコードになるんでしょうか?
カラーコードという名称が適切かは分かりませんが、色のプロパティを数値化して-1から1までで表すものだと思います。標準値が0になるようです。
**
あまり、良いアイデアが思いつきませんし、自信はありませんが、以下は、一括で、Ifでまとめてしまうと、エラー値が3つに掛かってしまい、比較が出来ません。そこで、エラー値もひとつの値として、比較するようにすれば、旧バージョン仕様に対しても新バージョン仕様に対しても、検出可能かと思います。
'//
Function CountColor(計算範囲 As Range, 条件色セル As Range) As Long
Dim c As Range
Dim cnt As Long
Dim o, p, q 'Variant型に限る
Dim x, y, z 'Variant型に限る
On Error Resume Next
o = 条件色セル.Interior.ColorIndex
p = 条件色セル.Interior.ThemeColor
q = 条件色セル.Interior.TintAndShade
For Each c In 計算範囲
x = c.Interior.ColorIndex
y = c.Interior.ThemeColor
z = c.Interior.TintAndShade
If (o = x And p = y And q = z) Then
cnt = cnt + 1
End If
x = Empty: y = Empty: z = Empty '不要かもしれない。念のため
Next c
On Error GoTo 0
CountColor = cnt
End Function
'//
No.1
- 回答日時:
こんばんは!
個人的にはカラーコードより、カラーインデックスもしくはRGB値での表示が多いのですが・・・
仮にA1~D10セル内に
白、背景1、黒+基本色15% の色付きセルの個数を求めたい場合は
Sub Sample1()
Dim cnt As Long, c As Range
For Each c In Range("A1:D10")
If c.Interior.ColorIndex = 15 Then '←白、背景1、黒+基本色15%
cnt = cnt + 1
End If
Next c
MsgBox cnt
End Sub
としてマクロを実行してみてください。
※ 白、背景1、黒+基本色35% の場合は
カラーインデックスは 48 になると思います。
参考資料 ↓のURLにカラーインデックスのURLとカラーコードのURLを載せておきます。
カラーインデックス(RGB値 16進数)
http://homepage2.nifty.com/vbasys/vbasys/vbaUtil …
カラーコード
http://sakamoto-san.com/color_wh4var_3.html
カラーコードを知りたい場合はRGB値とカラーコードの対照表になっています。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリックすると文章が表示され...
-
EXCELで特定のセルに表示...
-
エクセル 数字をすべて○などの...
-
セルデータの一時保存
-
エクセルで独自のキーボードシ...
-
DRセルのリンクをCセルにハイパ...
-
マクロで未来?の日付を算出する
-
太字に設定されているセルの個...
-
Excel ハイパーリンクのURLを別...
-
エクセルでの特定位置のセル内...
-
VBA 見つからなかった時の処理
-
Excelの関数で時刻を固定する方法
-
セルの値が変ると自動でマクロ...
-
Excelでセルをクリックす...
-
セルの内容をテキストボックス...
-
エクセルで時間と連動して数値...
-
Excel内での検索結果をシート...
-
マクロを実行すると画像がズレ...
-
sheetsの保護されていないセル...
-
現在のセルの位置を返す関数は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで特定のセルに表示...
-
Excel内での検索結果をシート...
-
エクセル 数字をすべて○などの...
-
クリックすると文章が表示され...
-
Excelで、図形内の文字をセルに...
-
Excel ハイパーリンクのURLを別...
-
Excelでセルをクリックす...
-
太字に設定されているセルの個...
-
マクロを実行すると画像がズレ...
-
現在のセルの位置を返す関数は...
-
Excel:セルの値(文字列)を数...
-
Excel2007 色のカウント (VBA)
-
セルの内容をテキストボックス...
-
セルがクリックされた回数をカ...
-
エクセル 未入力セルがあると...
-
エクセルマクロ 赤色の文字を検...
-
選択したセル範囲に入っている...
-
アポストロフィーの一括挿入 ...
-
エクセルでPDFリンクを大量...
-
エクセルでセルをダブルクリッ...
おすすめ情報