我一直在寻找检查单元格中的每个字符,看它是否大写,但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)
我不确定在"大写"中我应该做些什么?
您将检查字符大写是否等于当前字符:
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)
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |