Here is the code I'm trying to count with in VBA, hoping to return a count return variable of "3" from 'FormulaResultCount'. Why can't I count what is visibly returned by the formulas within each cell; from the grey box (see photo below)?
Sub countNonBlanks()
Worksheets("Sheet1").Select
Range("C:C").Select
FormulaResultCount = Selection.SpecialCells(xlCellTypeFormulas).Count
'SpecialCells options from MSFT
' xlCellTypeAllFormatConditions. Cells of any format -4172
' xlCellTypeAllValidation. Cells having validation criteria -4174
' xlCellTypeBlanks. Empty cells 4
' xlCellTypeComments. Cells containing notes -4144
' xlCellTypeConstants. Cells containing constants 2
' xlCellTypeFormulas. Cells containing formulas -4123
' xlCellTypeLastCell. The last cell in the used range 11
' xlCellTypeSameFormatConditions. Cells having the same format -4173
' xlCellTypeSameValidation. Cells having the same validation -4175
' xlCellTypeVisible. All visible cells
'
End Sub
See formula as reference:
Note: Since I will have many more cells when working dynamically, loops will likely slow the process down too much. Also, I tried using CountA without result.
This would not return the cell based on their values but if they have any formula or not. As per your worksheet, you should get
5
Also, PLEASE PLEASE do not use
.Select
INTERESTING READYour code can also be written as
FormulaResultCount = Worksheets("Sheet1").Columns(3).SpecialCells(xlCellTypeFormulas).Count
Another Tip: When using
SpecialCells
, use appropriate error handling so that if there are no cells which match theSpecialCells
criteria, your code won't break. See this example.FOLLOWUP From Comments
Maybe this:
Thus counting all cells in range that start with any character?
What you really might want is:
I just learnt about the evaluate command. It's awesome!
And it gives you 3 :)
You can do this without VBA, using only formulas.
If you're trying to do this in VBA, you can use this: