First off, here is new code taking into account your specified column (P) and desire to be able to count numbers greater than and also less than zero...
Code:
[TABLE="width: 500"]
<tbody>[TR]
[TD]Function ZeroCount(Symbol As String)
Dim Ar As Range
For Each Ar In Range("P18", Cells(Rows.Count, "P").End(xlUp)).SpecialCells(xlVisible).Areas
ZeroCount = ZeroCount + WorksheetFunction.CountIf(Ar, Symbol & "0")
Next
End Function[/TD]
[/TR]
</tbody>[/TABLE]
The argument you pass to the function is either "<" to count cells less than 0 or ">" to count cells greater than 0. You can also pass in "=" if you wanted to count the number of zeroes as well. The function assumes the worksheet you want to count is the active worksheet (this is in keeping with the code you posted so far). To use this function in your UserForm, simply assign the function to the Label's Caption property. For example,
Label1.Caption = ZeroCount(">")
to count cells greater than 0; or...
Label2.Caption = ZeroCount("<")
to count cells less than 0.