[[20040619173237]] 『塗りつぶしなしのセルの数を数えたい』(壮年) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『塗りつぶしなしのセルの数を数えたい』(壮年)
 A5〜A35に1〜31の数字が1から順に入っています。
その中には色が付いているセルが幾つかありますが、
色なしのセルの個数を数えたいです。
但し、数える範囲はA5から始まりますがA1に入力した値と
同じ値が入っているセルまでです。数えた個数をA2に表示したいのです。
この学校で出ていたカラー関数とか他の回答例をくっ付けて
やってみましたがどうしても出来ません。
私は、まだまだVBAの幼稚園児(赤ん坊かな)です。
私の作ったのを見て下さい、そしてどこが悪いのかどなたか教えて下さい。
Win2000   Excel2000です

Sub test()

Sheets("進捗").Activate

    Range("A1").Select
Dim d As Integer
For d = Range("A65536").End(xlUp).Row To 1 Step -1
If Selection.Value = Range("A" & d).Value Then
    Range("A" & d).Select

  A = ActiveCell.Row
  B = ActiveCell.Column

  Range(Cells(5, B), Cells(A, B)).Select
  i = UFClrCntcc(Cells(5, B), Cells(A, B) - 4142)
   Cells(2, 1) = i
   Exit Sub
   End If
   Next d

End Sub


 UFClrCntccへの引数の指定が間違っています。

 指定色カウント = UFClrCntcc(セル範囲, 指定色)

 ですが、

 i = UFClrCntcc(Cells(5, B),       Cells(A, B) - 4142)
                    ↑                     ↑
                 セル範囲                指定色

 となってしまっています。
 (現状 Cell(A, B) から 4142 を引いたものが指定色になっている)

 せっかくその上の Range(Cells(5, B), Cells(A, B)).Select で
 セル範囲を選択しているのですから、

 i = UFClrCntcc(Selection, -4142)

 とすればよいと思います。
 (ramrun)

 Sub test()
 Dim d As Integer

 Sheets("進捗").Activate
 Range("A1").Select

 For d = Range("A65536").End(xlUp).Row To 1 Step -1
    If Selection.Value = Range("A" & d).Value Then
        Range("A" & d).Select
        A = ActiveCell.Row
        B = ActiveCell.Column
        Range(Cells(5, B), Cells(A, B)).Select
        i = UFClrCntcc(Selection, -4142)
        Cells(2, 1) = i
        Exit Sub
    End If
 Next d
 End Sub

 Public Function UFClrCntcc(adrs, clr)
 ' 特定のセル色の数
 Dim sm As Variant, cv As Variant, fci As Integer, ad As Range
  sm = 0
   For Each ad In adrs
    fci = ad.Interior.ColorIndex
    If fci = clr Then
     sm = sm + 1
    End If
   Next
 UFClrCntcc = sm
 End Function

 (ramrun)さん早速の回答有難うございます。
完璧です。出来ました。(ramrun)さんの書き込みは
よく拝見しております、今後ともよろしくお願い致します。
(壮年)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.