简单一点的,但不安全的方法用 ASC(""),如果结果小于0,可以认为是汉字。

解决方案 »

  1.   

    http://www.csdn.net/expert/topic/181/181622.shtm符合你的要求
      

  2.   

    我刚好看过这方面的书,VB用的字符代码方式和NT是一样的UNICODE不管是中文还是英文都用两个字节保存,而WIN9X是用Dxxx什么的字符系统,中文占两个字节,英文占一个字节.在VB中有一个LEN可以得到UNICODE的代码长度,比如LEN("中")=1,而LENA("中")=2,所以可以用这一点来判断。然而一个日文(或其它东亚双字节代码区也是)LENA(“x”)=2,就是说这种方法只能判断出一个字符不是英文。当然,在中国就自然就是中文了。
      

  3.   

    用 ASC(""),如果结果小于0,可以认为是汉字
      

  4.   

    Dim strCHI As String   'strCHI 为一个汉字
    cArea = Asc(strCHI)
    cArea = cArea + 65536
    如果cArea在45217和55359之间就是汉字
      

  5.   

    下面的函数是本人贴在http://www.csdn.net/expert/topic/181/181622.shtm上,已经通过验证。
    判断是否是中文字符的函数如下
    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Byte, ByVal Source As String, ByVal Length As Long)
    '该函数判断传入字符是否是GBK汉字库中的字符
    '如果是则返回True,否则返回False,绝对不会包括全角的标点和特殊符号[A1-AA]等
    Private Function IS_GBK_HZ(ByVal sHZ As String) As Boolean
        Dim aHZ(1) As Byte
        sHZ = Left(sHZ, 1)
        If Len(sHZ) > 0 Then
            CopyMemory aHZ(0), sHZ, 2
            IS_GBK_HZ = (((aHZ(0) >= &H81) And (aHZ(0) < &HA1)) Or ((aHZ(0) >= &HAA) And (aHZ(0) < &HFE))) And (aHZ(1) >= &H40) And (aHZ(1) < &HFF)
        End If
    End Function
      

  6.   

        Dim R() as Byte
        Dim i as Integer
        Dim TmpStr as String
        For i = 1 To Len(Text1.Text)
            TmpStr = Mid(Text1.Text, i, 1)
            R = StrConv(TmpStr, vbFromUnicode)
            If UBound(R) < 1 Then
               MsgBox "英文"            
            Else
               MsgBox "汉字"            
            End If
       Next i