我是excel vba的新手,我需要帮助。
我在工作表(“Numbers”)中有一个范围(A2:A22),它有条件地格式化(底部30%)以具有颜色的背景填充(ThemeColor = xlThemeColorDark1)。
在我的专栏中,有些单元符合格式条件并具有背景填充颜色。其他人没有填补。
在我正在尝试构建的宏上,我想计算未使用填充格式化的范围中的单元格数。
我在Cell B2中显示了计数,但它返回0。
Dim numberRange As Range, r As Long, count As Integer
Set numberRange = Worksheets("Numbers").Range("A2:A22")
count = 0
For r = 1 To numberRange.Rows.Count
If Not numberRange(r, 1).FormatConditions(1).Interior.ThemeColor = _
xlThemeColorDark1 Then count = count + 1
Next r
Worksheets("Numbers").Range("B2").Value = count
我在各地的论坛上看过,也许我没有看到明显的问题。请帮忙。谢谢!
答案 0 :(得分:3)
我花了很多时间在这上面并且设法创建了一个函数,它将告诉你在一个范围内有多少个细胞满足或者不满足条件形成条件。这仅适用于数值条件格式化(不是“包含文本”)。
所以在你的情况下你会这样做:
=FormatCount(A2:A22, FALSE)
这是功能!
Function FormatCount(ByVal myRange As Range, _
Optional ByVal check_result = True) As Long
Application.ScreenUpdating = False
Dim cell As Range
Dim count As Long
Dim result As Boolean
Dim formula1 As Long
Dim formula2 As Long
For Each cell In myRange
On Error Resume Next
With cell.FormatConditions
If .count = 1 Then
formula1 = CLng(Right(.Item(1).formula1, Len(.Item(1).formula1) - 1))
formula2 = CLng(Right(.Item(1).formula2, Len(.Item(1).formula2) - 1))
Select Case .Item(1).Operator
Case 1
If cell.Value >= formula1 And _
cell.Value <= formula2 Then
result = True
End If
Case 2
If cell.Value < formula1 And _
cell.Value > formula2 Then
result = True
End If
Case 3
If cell.Value = formula1 Then
result = True
End If
Case 4
If cell.Value <> formula1 Then
result = True
End If
Case 5
If cell.Value > formula1 Then
result = True
End If
Case 6
If cell.Value < formula1 Then
result = True
End If
Case 7
If cell.Value >= formula1 Then
result = True
End If
Case 8
If cell.Value <= formula1 Then
result = True
End If
End Select
End If
End With
If result = check_result Then
count = count + 1
End If
result = False
Next
FormatCount = count
Application.ScreenUpdating = True
End Function
工作原理: