检查字符串是否为大写字符

joh*_*253 2 excel vba

我一直在寻找检查单元格中的每个字符,看它是否大写,但UCASE将字母转换为大写,但我希望能够检查.我不确定"做"这句话应该怎么做.

Function Italic(rng As Range) As Variant
    Dim strng As String
    Dim iEnd As Long, iIni As Long, strngLen As Long

    strngLen = Len(rng.Value2)
    iIni = 1

    Do While iEnd <= strngLen
       Do While UCase(Mid(rng.Value, iEnd, 1)) = Mid(rng.Value, iEnd, 1) And Not rng.Characters(iEnd, 1).Font.Italic
            If iEnd = strngLen Then Exit Do
            iEnd = iEnd + 1
        Loop
        If iEnd > iIni Then strng = strng & Mid(rng.Value2, iIni, iEnd - iIni) & "|"
        iEnd = iEnd + 1
        iIni = iEnd
    Loop

    If strng <> "" Then Italic = Split(Left(strng, Len(strng) - 1), "|")

End Function
Run Code Online (Sandbox Code Playgroud)

我不确定在"大写"中我应该做些什么?

Sco*_*ner 5

您将检查字符大写是否等于当前字符:

 While UCase(rng.Characters(iEnd, 1).Text) = rng.Characters(iEnd, 1).Text And Not rng.Characters(iEnd, 1).Font.Italic?
Run Code Online (Sandbox Code Playgroud)

谢谢@SiddharthRoth的帮助.

现在您已经显示了完整的代码,还有一个注释.您应该避免使用excel中使用的单词命名变量,subs和函数.

因此,将名称更改为Itlc或其他内容:

Function Itlc(rng As Range) As Variant
    Dim strng As String
    Dim iEnd As Long, iIni As Long, strngLen As Long

    strngLen = Len(rng.Value2)
    iIni = 1

    Do While iEnd <= strngLen
       Do While UCase(rng.Characters(iEnd, 1).Text) = rng.Characters(iEnd, 1).Text And Not rng.Characters(iEnd, 1).Font.Italic
            If iEnd = strngLen Then Exit Do
            iEnd = iEnd + 1
        Loop
        If iEnd > iIni Then strng = strng & Mid(rng.Value2, iIni, iEnd - iIni) & "|"
        iEnd = iEnd + 1
        iIni = iEnd
    Loop

    If strng <> "" Then Itlc = Split(Left(strng, Len(strng) - 1), "|")

End Function
Run Code Online (Sandbox Code Playgroud)

  • 您的原始代码是正确的.它只是缺少`.Text` (2认同)