In a subroutine/macro?
For a single area range, you can get the number of visible rows/columns with
something like:
Option Explicit
Sub testme()
Dim myRng As Range
Dim myVisibleCell As Range
Set myRng = ActiveSheet.Range("a1:x99")
Set myVisibleCell = Nothing
On Error Resume Next
Set myVisibleCell = myRng.Cells.SpecialCells(xlCellTypeVisible).Cells(1)
On Error Resume Next
If myVisibleCell Is Nothing Then
MsgBox "0 visible rows and 0 visible columns!"
Else
MsgBox "Visible Rows: " _
& Intersect(myVisibleCell.EntireColumn, myRng) _
.Cells.SpecialCells(xlCellTypeVisible).Cells.Count _
& vbLf & _
"Visible Cols: " _
& Intersect(myVisibleCell.EntireRow, myRng) _
.Cells.SpecialCells(xlCellTypeVisible).Cells.Count
End If
End Sub