Both Split() and Replace() methods are much faster than Instr() method.
You should add CompareMethod to make them completed.

Split() is faster than Replace() if use vbTextCompare
Replace() is faster than Split() if use vbBinaryCompare
Code:
Public Function CountSubstr1(sText As String, sSubstr As String, _
                             Optional Compare As VbCompareMethod = vbTextCompare) As Integer
    CountSubstr1 = UBound(Split(sText, sSubstr, , Compare))
End Function
Code:
Public Function CountSubstr2(sText As String, sSubstr As String, _
                             Optional Compare As VbCompareMethod = vbTextCompare) As Integer
    CountSubstr2 = Len(sText) - Len(Replace(sText, sSubstr, "", , , Compare))
End Function