如果返回值带有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
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