用一个API函数很简单就会可以求出字符才度了,一个汉字或全角字符的值为2.英文字符值为1.

解决方案 »

  1.   

    如果返回值带有0。5 则表明出现一个英文字符
    Public Function MLen(SStr As String) As Long
        Dim i As Integer, S As String
        i = Len(StrConv(SStr, vbFromUnicode))  
        S = MMid(SStr, 1, i)
        If S <> SStr Then
            MLen = i + 0.5
        Else
            MLen = i
        End If
    End Function并且 我用它取子字符串
    Public Function MMid(SStr As String, SStar As Integer, SLen As Integer) As String
        Dim S As String, S1 As String
        If SStar > 1 Then
            S = StrConv(Mid(StrConv(SStr, vbFromUnicode), 1, SStar - 1), vbUnicode)
            S1 = Mid(SStr, 1, Len(S))
            Debug.Print S = S1
            If S <> S1 Then
                S = Mid(SStr, Len(S1))
            Else
                S = Mid(SStr, Len(S1) + 1)
            End If
            MMid = StrConv(Mid(StrConv(S, vbFromUnicode), 1, SLen), vbUnicode)
        Else
            MMid = StrConv(Mid(StrConv(SStr, vbFromUnicode), SStar, SLen), vbUnicode)
        End If
    End Function