我对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
它工作正常,但由于标题过滤器而隐藏了一些行。
当我使用上面的代码时,它也显示隐藏单元格的输出,但我不希望结果包含隐藏的单元格。在标题中过滤后,我只需要查看可查看单元格的结果。
有没有办法做到这一点?
答案 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
。