Excel 查找具有上标和下标文本的单元格
我正在努力学习VBAExcel 查找具有上标和下标文本的单元格,excel,vba,Excel,Vba,我正在努力学习VBA 我想在单元格文本中标记具有上标/下标的单元格。使用Excel VBA是否可以执行此操作?如果您的单元格 全部上标,或 以上标字符开头(这很奇怪-xlPart应该可以找到格式化字符串的任何部分) 然后,该代码(设置为查看B列)将比根据msft链接测试每个单元格中的每个字符快得多 您可以使用Application.FindFormat.Font.Superscript=True作为上标 如果做不到这一点,我将寻找更复杂的解决方案来解析这些字符,这将需要导出文本 Sub Te
我想在单元格文本中标记具有上标/下标的单元格。使用Excel VBA是否可以执行此操作?如果您的单元格
- 全部上标,或
- 以上标字符开头(这很奇怪-
应该可以找到格式化字符串的任何部分)xlPart
Application.FindFormat.Font.Superscript=True
作为上标
如果做不到这一点,我将寻找更复杂的解决方案来解析这些字符,这将需要导出文本
Sub Test()
Dim ws As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Dim FirstAddress As String
Set ws = ActiveSheet
Set rng1 = ws.Range("B:B")
Application.FindFormat.Font.Subscript = True
With rng1
Set rng2 = .Cells.Find("*", , xlFormulas, xlPart, xlByRows, xlNext, , , True)
If rng2 Is Nothing Then
MsgBox "None found"
Else
FirstAddress = rng2.Address
Set rng3 = rng2
Do
Set rng2 = .Cells.Find("*", rng2, xlFormulas, xlPart, xlByRows, xlNext, , , True)
If rng2.Address = FirstAddress Then
Exit Do
Else
Set rng3 = Union(rng3, rng2)
End If
Loop
If Not rng3 Is Nothing Then MsgBox rng3.Address
End If
End With
End Sub
查看Excel中的,了解如何使用VBA进行操作。如果您是VBA的初学者,我也建议您阅读本指南并从一开始就遵循这些规则。@Peh,我对VBA有一些了解,我只是不知道如何知道单元格是否包含SUP或子字符格式以及在哪些字符索引处?您需要检查此设置
。字符(开始:=1,长度:=1).Font.Subscript=True
用于单元格中的每个字符(循环遍历所有字符),以确定是否有任何字符是上标格式的。如果需要对多个单元格执行此操作,则需要另一个循环。这(对我而言)仅适用于完全格式化的单元格(好像xlPart
没有帮助)。在设置新格式之前,几乎还需要先执行Application.FindFormat.Clear
,以避免将新格式与以前的设置合并+1尽管是为了铺路。