Excel 查找具有上标和下标文本的单元格

Excel 查找具有上标和下标文本的单元格,excel,vba,Excel,Vba,我正在努力学习VBA 我想在单元格文本中标记具有上标/下标的单元格。使用Excel VBA是否可以执行此操作?如果您的单元格 全部上标,或 以上标字符开头(这很奇怪-xlPart应该可以找到格式化字符串的任何部分) 然后,该代码(设置为查看B列)将比根据msft链接测试每个单元格中的每个字符快得多 您可以使用Application.FindFormat.Font.Superscript=True作为上标 如果做不到这一点,我将寻找更复杂的解决方案来解析这些字符,这将需要导出文本 Sub Te

我正在努力学习VBA


我想在单元格文本中标记具有上标/下标的单元格。使用Excel VBA是否可以执行此操作?

如果您的单元格

  • 全部上标,或
  • 以上标字符开头(这很奇怪-
    xlPart
    应该可以找到格式化字符串的任何部分)
然后,该代码(设置为查看B列)将比根据msft链接测试每个单元格中的每个字符快得多

您可以使用
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尽管是为了铺路。