[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『塗りつぶしなしのセルの数を数えたい』(壮年)
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.