0

Excel VBAのマクロについて質問です。Excelで色付きのセルの数を取得したいので、以下のコードを書きました:

Application.ScreenUpdating = False
x = Range("D2:Y46").Select

For Each d In Selection 
    d.Select 
    If Selection.Interior.Color = 15773696 Then
        Count = Count + 1 
    End If 
Next

Application.ScreenUpdating = True 
Range("C53").Select 
Selection = Count

正常に動作していますが、見出しフィルターのために非表示になっている行がいくつかあります。

上記のコードを使用すると、非表示のセルの出力も表示されますが、結果に非表示のセルを含めたくありません。見出しでフィルターをかけた後、表示可能なセルの結果のみが必要です。

これを行う方法はありますか?

4

1 に答える 1

1

私はあなたが要求したことを実行するようにコードを修正しましたが、効率も改善しました。Select通常、セルで何かを行う前にセルにアクセスする必要はありません。

Option Explicit

Sub CountCellsByColor()

Dim d As Range, x As Range
Dim Count As Integer
Application.ScreenUpdating = False

Set x = Range("D2:Y46")

For Each d In x
    If d.Interior.Color = 15773696 And Not d.Rows.Hidden And Not d.Columns.Hidden Then
        Count = Count + 1
    End If
Next

Application.ScreenUpdating = True
Range("C53").Value = Count


End Sub

行がフィルターで除外されていない (非表示になっている) 場合、チェックNot d.Rows.Hiddenは戻ります。True

于 2012-07-03T14:55:05.520 に答える