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 回答