You may also try something like this ...
Option Explicit
Sub CountCF()
Dim rngF As Range, rngC As Range, cnt As Long
Dim firstAddy As String, cel As Range
Set rngF = ActiveCell.SpecialCells(xlCellTypeAllFormatConditions)
Set rngC = rngF.Find(10, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=True)
If Not rngC Is Nothing Then
firstAddy = rngC.Address
Do
Set rngC = rngF.FindNext(rngC)
cnt = cnt + 1
Loop Until rngC.Address = firstAddy
End If
MsgBox cnt
End Sub
Not sure how much faster it would be, but it wouldn't be looping through every cell.