dポイントプレゼントキャンペーン実施中!

お願い致します。
初心者です。
インターネットで検索し
頑張って下記にて @CountColora(E8:E29) などで
色付きのセルを数えられるようになりましたが
フィルター機能を使用しても
表示されてない色付きセルもカウントされてしまいます。
簡単にできる方法はないでしょうか?
ご教示お願い致します。

Function CountColorA(Rng As Range) As Long

Dim myRng As Range
Dim Col_cnt As Long

Application.Volatile
Col_cnt = 0

For Each myRng In Rng
If myRng.Interior.ColorIndex > 0 Then
Col_cnt = Col_cnt + 1
End If
Next myRng
CountColorA = Col_cnt

End Function

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

  • うーん・・・

    そもそもの初心者、です。
    インターネットで検索して
    コピペして色付きのセルはカウントできるようになりました。
    フィルター使用時に抽出のもののみのカウントをしたいのです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/04/11 13:38
  • わかりにくくすみません。
    フィルター表示させ、確認のために使用したいのです。

    「エクセルで色付きセルをカウントしたい(フ」の補足画像2
    No.2の回答に寄せられた補足コメントです。 補足日時:2019/04/11 14:28
  • ありがとうございます!!!

    エラーが出てしまうのはなぜでしょうか?

    「エクセルで色付きセルをカウントしたい(フ」の補足画像3
    No.3の回答に寄せられた補足コメントです。 補足日時:2019/04/11 15:05

A 回答 (4件)

No.3です。



今こちらで確認してみました。
確かにエラーになってしまいますね。

ユーザー定義関数で DisplayFormatオブジェクトを使っているのが原因みたいです。
どうも失礼しました。

結局余計な記述をしてしまったようで、
>If myRng.DisplayFormat.Interior.ColorIndex <> xlNone Then

>If myRng.Interior.ColorIndex <> xlNone Then
に変更してください。

前回回答したように、手動で色付けされたセルのカウントになります。

※ 通常のマクロでのDisplayFormatオブジェクトでは問題ないようです。
なぜか判りません。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。
確認までしてくださり...本当にありがとうございます。

お礼日時:2019/04/11 16:41

こんにちは!



お示しのコードでとりあえずお望みの動きになっているのであれば
フィルタで表示されている行だけを限定すれば良いと思います。

>If myRng.Interior.ColorIndex > 0 Then
の1行を

 If myRng.Rows.Hidden = False Then
  If myRng.Interior.ColorIndex > 0 Then
   Col_cnt = Col_cnt + 1
  End If
 End If

こんな感じで・・・

※ 余計なお世話かもしれませんが、お示しのコードの場合
手動での色つきセル限定(条件付き書式での色付けは無視される)になります。

仮に条件付き書式で色付けされているセルもカウントしたい場合は

If myRng.DisplayFormat.Interior.ColorIndex <> xlNone Then

とすれば条件付き書式で色付けされているセルもカウントされます。m(_ _)m
この回答への補足あり
    • good
    • 0

ですよね。

だったら、VBAなんて使わなくても簡単に検索機能でカウントだけでいいなら可能です。
ただ、データとして、使用するなら、書式ではなく、その書式の条件そのものでフィルタリングすべきです。
書式は、あくまで書式なので。後々を考えると、そこを理解した方がいいですよ。書式はデータではない。
「エクセルで色付きセルをカウントしたい(フ」の回答画像2
この回答への補足あり
    • good
    • 0

ん?VBA初心者ってこと?そもそもの初心者とどっち?

この回答への補足あり
    • good
    • 0

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