Function StringCount(strSource As String, strSub As String) As Long
    Dim lngSrc As Long
    lngSrc = Len(strSource)
    Dim lngFor As Long
    Dim lngCnt As Long
    For lngFor = 1 To lngSrc
        If Mid(strSource, lngFor, Len(strSub)) = strSub Then lngCnt = lngCnt + 1
    Next
    StringCount = lngCnt
End Function

解决方案 »

  1.   

    这个函数是计算一个字符串在源串中的个数:
    debug.print StringCount("abcdabefgab","ab")  ====>结果是3
      

  2.   

    对单个字符也适应:
    debug.print StringCount("abcdabefgab","a")  ====>结果也是3
      

  3.   

    '呵呵,这是一个计算子字符串在原字符串出现的次数,不过可以不使用循环来处理
    '可以使用总长度减去去掉子字串后的长度,然后除以字串本身长度,就得到次数了
    Debug.Print (Len(strSource) - Len(Replace(strSource, strSub, ""))) / Len(strSub)
      

  4.   

    用split函数也可以:
    Function StringCount(strSource As String, strSub As String) As Long
    dim buff() as string
    if lenstr(strsub)=0 then exit function
    buff=split(strSource,strSub)
    StringCount=ubound(buff)+1
    End Function
      

  5.   

    求重复子串的数量,其算法并未经过优化,在发现匹配后步长的调节应该为STRSUB的长度,不应该再加1来测试的。
    winehero(编程人生) 的REPLACE大法是一种技巧,LZ可以参考。