VBA проверьте, если частичный жирный шрифт в ячейке

я генерирую XML из списка текста на листе, но я не могу понять, как проверить, есть ли в текущей ячейке жирное слово. Что мне нужно сделать, это проверить каждую ячейку в столбце A, прочитать текст в строку, если я нажму какие-либо жирные слова, добавьте теги вокруг него.

Я знаю, что вы можете читать содержимое ячеек символ за символом, но не его форматирование.

любая помощь была бы очень признательна!

1 ответов


вот способ, который вы можете использовать, чтобы проверить, если ячейка имеет

  1. смешанные символы, которые выделены жирным шрифтом. В этом случае он вернется NULL
  2. все символы выделены жирным шрифтом. В этом случае он вернется TRUE
  3. ни один из символов не выделен жирным шрифтом. В этом случае он вернется FALSE

пример

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 hereenter 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