Vba检查单元格中是否有部分粗体

时间:2013-04-25 08:11:42

标签: excel vba formatting cell

我从工作表中的文本列表生成XML但我无法弄清楚如何检查当前单元格中是否有粗体字。我需要做的是检查A列中的每个单元格,将文本读成字符串,如果我点击任何粗体字,请在其周围添加 标记。

我知道您可以逐个字符地读取单元格内容,但不能读取格式。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:10)

以下是一种可用于检查单元格是否

的方法
  1. 粗体混合字符。在这种情况下,它将返回NULL
  2. 所有字符均为粗体。在这种情况下,它将返回TRUE
  3. 所有字符都不是粗体。在这种情况下,它将返回FALSE
  4. 示例

    enter image description here

    Sub Sample()
        Debug.Print Range("A1").Font.Bold
        Debug.Print Range("A2").Font.Bold
        Debug.Print Range("A3").Font.Bold
    End Sub
    

    enter image description here

    要检查单元格是否有任何粗体字符,您也可以使用此功能(来自VBA或工作表

    '~~> This is an additional function which will return...
    '~~> TRUE if Cell has mixed/all chars as bold
    '~~> FALSE if cell doesn't have any character in bold.
    '~~> This can also be used as a worksheet function.
    Function FindBoldCharacters(ByVal aCell As Range) As Boolean
        FindBoldCharacters = IsNull(aCell.Font.Bold)
        If Not FindBoldCharacters Then FindBoldCharacters = aCell.Font.Bold
    End Function
    

    <强>截图

    enter image description here enter image description here

    您可以使用.Characters().Font.FontStyle检查每个字符是否为粗体。使用上面的范围A1示例。

    Sub Sample()
        For i = 1 To Len(Range("A1").Value)
            Debug.Print Range("A1").Characters(i, 1).Font.FontStyle
        Next i
    End Sub
    

    <强> Screeenshot

    enter image description here

    修改后的代码

    Sub Sample()
        For i = 1 To Len(Range("A1").Value)
            If Range("A1").Characters(i, 1).Font.FontStyle = "Bold" Then
                Debug.Print "The " & i & " character is in bold."
            End If
        Next i
    End Sub
    

    <强>截图

    enter image description here