VBA - 过滤后仅需要报告可查看单元格的单元格格式

时间:2012-05-24 11:31:08

标签: excel vba excel-vba excel-vba-mac

我对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

它工作正常,但由于标题过滤器而隐藏了一些行。

当我使用上面的代码时,它也显示隐藏单元格的输出,但我不希望结果包含隐藏的单元格。在标题中过滤后,我只需要查看可查看单元格的结果。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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