Текст
содержит строку скрытого текста
содержит метки ревизий, а удаленные ревизии форматируются как скрытые.
т.е. удаленный (скрытый) текст видимый текст
видимый текст был выбран (не зная, что ему предшествует скрытый текст) и выделение копируется в диапазон.
Dim R_Visible as range
set R_Visible = selection.range
Если я хочу определить какое-либо свойство, например стиль символа, VBA вызовет свойство стиля всей строки "удаленный (скрытый) текст видимый текст", а не только" видимый текст". Таким образом, если стиль символа удаленной части отличается от стиля символа видимой части, VBA вернет значение selection.ParagraphFormat.style
.
Чтобы сделать вещи более сложными, я хочу извлечь стиль символа изтолько 1-й символ выделенного текста. Вот некоторые возможные подходы и их результаты:
a) Print R_Visible.characters(1).CharacterStyle
==> Ошибка времени выполнения 91
b) Print R_Visible.characters(1).Style
==> Стиль абзаца
КакОбходной путь Я написал следующую функцию:
Function ExactRange(Optional R_Range) As Range
Dim R_Selected As Range
If IsMissing(R_Range) Then
Set ExactRange = Selection.Range
Else
'set ExactRange = R_Range.duplicate '(I haven't tested thoroughly whether that works under all circumstances)
Set R_Selected = Selection.Range
R_Range.Select
Set ExactRange = Selection.Range
R_Selected.Select 're-establishing the original selection-object
End If
ExactRange.SetRange Start:=ExactRange.Characters(1).End - 1, _
End:=ExactRange.Characters(Len(ExactRange)).End
End Function
, которая дает еще несколько результатов:
c) print Mtf_ExactRange(R_Visible).style
==> стиль символов
d) print MTF_ExactRange(R_Visible).Characters(1).Style
==> стиль абзаца
e) print MTF_ExactRange(R_Visible.characters(1)).Style
== стиль символа
Мне кажется, что поведение довольно странное. Может ли кто-нибудь объяснить мне, что здесь происходит, и, возможно, указать на предполагаемый VBA-метод для выявления стиля символа в данных обстоятельствах без необходимости использования обходной функции?