六合开奖结果现场直播欢迎诸位!收藏本站注 册登 陆
常用三肖中特马:基础知识网络知识操作系统WPS网页制作数据库算法网页成功之路网络安全最新技术古典mid流行midmid背景下载中心
您现在的位置:首页 > 三肖中特马 > 文章页

使用VBA判断单元格各字符是否为中文、英文、数字、符号的复杂代码

Admin | 2009-2-12 12:17:25 | ReadNums | 12094 | 标签 六合开奖结果现场直播 | 打印本页
     

  代码如下:

  Function IsLike(strText As String, pattern As String) As Boolean
    IsLike = strText Like pattern
End Function
Function IsChinese(strText As String) As Boolean
Dim i%, h$
h = Hex(Asc(strText))
If Asc(Left(h, 1)) >= 66 And Asc(Left(h, 1)) <= 70 Then
    IsChinese = True
End If
End Function

Function StringType(strText As String, Optional outPutType As Integer = 1, Optional sumVar As Boolean = False) As Variant
Dim strtemp As String, blnArray(1 To 5) As String, strPreType As Integer
Dim intNum As Integer, startPos As Integer, intlen As Integer
Dim strArray As Variant, strCompare1 As String, strCompare2 As String, dblSum As Double
If sumVar = True And Not (outPutType <> 2 Or outPutType <> 4) Then sumVar = False
For i = 1 To Len(strText)
    strtemp = Mid(strText, i, 1)
    If i > 1 Then strCompare1 = WorksheetFunction.Asc(Mid(strText, i - 1, 3))
    strCompare2 = WorksheetFunction.Asc(Mid(strText, i, 2))
    If WorksheetFunction.Dbcs(strtemp) = strtemp Then
        strtemp = WorksheetFunction.Asc(strtemp)
        If IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") Then
            If strPreType = 4 Then
                blnArray(4) = Left(blnArray(4), Len(blnArray(4)) - 1) & intNum
            Else
                intNum = 1
                blnArray(4) = blnArray(4) & "- " & i & "/" & intNum
            End If
            strPreType = 4
            intNum = intNum + 1
        ElseIf IsLike(strtemp, "[a-zA-Z]") Then
            If strPreType = 5 Then
                blnArray(5) = Left(blnArray(5), Len(blnArray(5)) - 1) & intNum
            Else
                intNum = 1
                blnArray(5) = blnArray(5) & "- " & i & "/" & intNum
            End If
            strPreType = 5
            intNum = intNum + 1
        ElseIf IsChinese(strtemp) Then
            If strPreType = 1 Then
                blnArray(1) = Left(blnArray(1), Len(blnArray(1)) - 1) & intNum
            Else
                intNum = 1
                blnArray(1) = blnArray(1) & "- " & i & "/" & intNum
            End If
            strPreType = 1
            intNum = intNum + 1
        Else
            strPreType = 0
        End If
    Else
        If IsLike(strtemp, "[0-9]") Or IsLike(strCompare1, "[0-9].[0-9]") Or IsLike(strCompare2, "-[0-9]") Then
            If strPreType = 2 Then
                blnArray(2) = Left(blnArray(2), Len(blnArray(2)) - 1) & intNum
            Else
                intNum = 1
                blnArray(2) = blnArray(2) & "- " & i & "/" & intNum
            End If
            strPreType = 2
            intNum = intNum + 1
        ElseIf IsLike(strtemp, "[a-zA-Z]") Then
            If strPreType = 3 Then
                blnArray(3) = Left(blnArray(3), Len(blnArray(3)) - 1) & intNum
            Else
                intNum = 1
                blnArray(3) = blnArray(3) & "- " & i & "/" & intNum
            End If
            strPreType = 3
            intNum = intNum + 1
        Else
            strPreType = 0
        End If
    End If
Next
strtemp = ""
strArray = Split(blnArray(outPutType), "-")
For i = 1 To UBound(strArray)
    intNum = InStr(1, strArray(i), "/")
    startPos = Mid(strArray(i), 1, intNum - 1)
    intlen = Mid(strArray(i), intNum + 1)
    If sumVar Then
        dblSum = dblSum + WorksheetFunction.Asc(Mid(strText, startPos, intlen))
    Else
        strtemp = strtemp & Mid(strText, startPos, intlen) & " "
    End If
Next
If sumVar Then
    StringType = dblSum
Else
    If Len(strtemp) Then
        StringType = Left(strtemp, Len(strtemp) - 1)
    Else
        StringType = ""
    End If
End If
End Function

  以上代码为网络复制,版权归原作者所有!


问题未解决:在线咨询

网友评论

(访客)
内容实用原创,讲得很好。
20xx年x月x日
(站长)
有问题请在线咨询。
20xx年x月x日