• 締切済み

Excel2007 色のカウント (VBA)

あるセル範囲にある特定色の数をカウントしたいのですが、どのようのマクロを組めばよろしいでしょうか? たとえば、下記のURLの場合にある赤色をカウントしたい場合、具体的にどのようにマクロ組めばよいですか? http://excel-magic.com/?no=42 実際に使いたい色は、2007から採用された色を基本として使用したいので、カラーコードの一覧表があればと思うのですが、ありますか? 塗りつぶし色 白、背景1、黒+基本色15% ⇒ -0.149998474074526 白、背景1、黒+基本色35% ⇒ -0.349986266670736 このマイナス数値がカラーコードになるんでしょうか?

みんなの回答

回答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 '//

  • tom04
  • ベストアンサー率49% (2537/5117)
回答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/vbaUtility/colorindex.htm カラーコード http://sakamoto-san.com/color_wh4var_3.html カラーコードを知りたい場合はRGB値とカラーコードの対照表になっています。m(_ _)m

関連するQ&A

  • Excel2007でカウントしたいのですが

    Excel2007でカウントしたいですがご協力お願い致します。 今ところはセルU6~U4363にデータが入ってますが、それ以上にデータは増えていきます。 幾つか背景カラー(ミドリ)が入ってるセルがありまして、U列の6行目から下のカラーセルの合計個数をセルU4に表したいです。 どなたかご協力お願い致します。

  • Excel2013の色の変更について

    Excel2013の色は、オプションで、「白」「薄い灰色」「濃い灰色」の3つしかありません。これを他の任意の色に変更することはできませんか。また、 ワークシートの背景(塗りつぶしではありません)も、「白」ではなく「淡い黄を帯びた白」などには設定できないのでしょうか。

  • 【Excel VBA】シート見出しの色を変更する

    Excel2003を使用しています。 シート数が10数枚のBookが複数あり、これらのBookで、シートのデータが変更されたら、シート見出しに色を付けるマクロを作りたく、とりあえず、マクロの記録をとってみました。 マクロの記録で、シート見出しの色を変更するコードや複数のシートを選択するコードはわかりましたが、実際にしたいことは、シート名が4桁の数値のシートにだけ、このマクロが実行されるようにしたいのです。このようなことは可能でしょうか?可能であれば、どのようにコードを記述すればいいでしょうか? よろしくお願いします。

  • Excel2002 色文字カウント コード

    色のついた文字セルをカウントするコードを検索し、 実際にやってみましたが、黒文字だけカウントできませんでした。 下記の「黄は6」のところを「黒は1」に変更してやりました。 その後、シートにもどって 色ごとに、=SpecialCell(A2:A14,3)としてカウントしました。 黒を他の色と同様に「=SpecialCell(A2:A14,1)」でカウント するために、どこを修正すれば宜しいでしょうか? 教えてください。よろしくお願いします。 ------------------------------------------- Function SpecialCell(targetRange As Range, _ intColor As Integer) As Integer '赤は3,緑は4,青は5,黄は6 Dim myCell As Range For Each myCell In targetRange If myCell.Font.ColorIndex = intColor _ Or myCell.Interior.ColorIndex = intColor Then SpecialCell = SpecialCell + 1 End If Next End Function -------------------------------------------

  • VBA セルの色を変更する

    VBA(エクセル2007使用)で、セルの背景色を変更する場合についての質問です。 マクロを実行する度に、セルの背景色を変更するマクロを作成しました。 オレンジ→水色→緑→灰色→無色  という風に変わっていくところまでは できたのですが、これだとマクロを実行するのにセルの状態が無色か、指定した カラーコードで塗りつぶされていないと実行できません。 下記、コードの一番最初の Case で ”背景色がどんな色の場合でも”という条件に したいのですが、どのように記載したらわからずにいます。。。 ---------------------------- Sub 色チェンジ() n0 = ActiveCell.Interior.ColorIndex Select Case n0 Case xlNone   ’ここを”どんな色の場合でも、、、という条件にしたいです。。” Selection.Interior.ColorIndex = 40 Case 40 Selection.Interior.ColorIndex = 34 Case 34 Selection.Interior.ColorIndex = 35 Case 35 Selection.Interior.ColorIndex = 15 Case 15 Selection.Interior.ColorIndex = xlNone End Select End Sub -----------------------------------

  • Excel2007でのVBAについて

    Excel2007でのVBAについて お世話になります。稚拙な質問になると思いますがよろしくお願いします。 VBやマクロにつきましてはまったくの初心者なのですが、 「セルをランダム色で塗る」というコードを自分なりに考え、 ボタンに付着させてみました。以下の通りです。 With Selection.Interior .Pattern = xlSolid .Color = RGB((255 * Rnd), (255 * Rnd), (255 * Rnd)) .PatternTintAndShade = 0 End With しかしボタンを押し実行してみますと、塗りつぶしはされるのですが、 Excelを起動してから最初の実行は必ず同じ色になります(小倉色のような)。 ポチポチとクリックしていっても、ランダムにはならず 毎回同じ順番で色が変化していきます。 1,600万色の中からランダム色で塗りつぶされないのは、何が問題でしょうか? ご指摘と、解決の方法をご教示お願いいたします。

  • Excel2002でマクロやVBAが使えない

    ファイルNO230881にExcel97で作ったマクロがExcel2000で使えないという質問がありましたが、私の場合Excel2000で作ったマクロがExcel2002で使えません。 ファイルNO230881の方は自動修復で直ったそうですが、自動修復のリストにExcel が乗ってきていないので困っています。 起きている症状は、 Excel2000で作成したマクロを、Excel2002で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう? VBAプロジェクトのライブラリファイル参照がうまくいっていないということはわかるんですが、VBエディタの[ツール]>[参照設定]がグレーで開くことができません。 みなさんのお知恵をお貸しください。

  • Excel2007で同じ数字記号全部に 色を塗り

    Excel2007で同じ数字記号全部に色を塗り何個あるかカウントしたいです。 (C5:T5)と(Z5:AQ5)のセル1つずつに0~9のいずれかの数字がランダムに入ってます。 W5に0~9 のいずれかの数字が入ります。 その数字を参照して(C5:T5)と(Z5:AQ5)の中にある同じ数字のセルの背景色を黄色に塗りつぶします。 そして、(C5:T5)の分はV5に (Z5:AQ5)の分はX5に、W5に入ってる数字を参照して何個有ったのかをカウントしたいです。 マクロでなくても良いのでよろしくお願いいたします。

  • excel2007のフォント等の色の選択について質問させてください。

    excel2007のフォント等の色の選択について質問させてください。 excel初心者なので解りづらい質問になってしまい申し訳ありません。 資格のテキストなどの問題に、「塗りつぶしの色は白、背景1、黒+基本色15%に設定してください」というようなものがよくあります。 大抵のものは「セルの書式設定」の色がたくさん出てくる場面で色にマウスを合わせると、色の名前が表示されますが、表示されない場合にはその色が何色が解らず悩んでしまいます。 このような時、その色の名前を表示させる方法はあるのでしょうか? 例えば、セルに複数のルールを設定する問題で、「ホーム」タブ→「スタイル」内の「条件付き書式」→「ルールの管理」→「新規ルール」→「書式」で出てくる書式設定のダイアログで塗りつぶしの色を選択したい場合に、色にマウスを合わせても色の名前が表示されません。 よろしくお願いします。

  • EXCEL2000でセルを黒、罫線を白、フォントを大きく

    EXCEL2000でデータ入力するのに眼が疲れるので、セルの色を黒、フォントを白で大きく、罫線を白にしたいのですが、ワードの背景色を変えるように簡単にできますでしょうか?セルを色で塗りつぶすを使うと、罫線も見えなくなってしまうのですが・・・。

専門家に質問してみよう