Единственный способ - .Select
этот текст, они манипулируют выделением. Selection
в единственном объекте, для которого вы можете использовать wdLine
в качестве границы. Ничто другое в объектной модели Word не работает с автоматическими переносами строк.
Sub GetFirstLineOfRange(RangeToCheck As Range, FirstLineRange As Range)
'Otherwise, Word doesn't always insert automatic line breaks
'and all the text will programmatically look like it's on a single line
If Not Application.Visible Or Not Application.ScreenUpdating Then
Application.ScreenRefresh
End If
Dim SelectionRange As Range
Set SelectionRange = Selection.Range
Set FirstLineRange = RangeToCheck
FirstLineRange.Select
Selection.Collapse Direction:=wdCollapseStart
Selection.EndOf Unit:=wdLine, Extend:=wdExtend
Set FirstLineRange = Selection.Range
If FirstLineRange.End > RangeToCheck.End Then
FirstLineRange.End = RangeToCheck.End
End If
SelectionRange.Select
End Sub
Function IsRangeOnOneLine(RangeToCheck As Range) As Boolean
Dim FirstLineRange As Range
GetFirstLineOfRange RangeToCheck, FirstLineRange
IsRangeOnOneLine = FirstLineRange.End >= RangeToCheck.End
End Function
Подпрограмма GetFirstLineOfRange
принимает RangeToCheck
и устанавливает FirstLineRange
в первой текстовой строке в заданном диапазоне.
Функция IsRangeOnOneLine
принимает RangeToCheck
и возвращает True
, если диапазон помещается на одной строке текста, и False
в противном случае. Функция работает, получая первую текстовую строку в заданном диапазоне и проверяя, содержит ли она диапазон.
Манипулирование Selection
в GetFirstLineOfRange
необходимо, потому что подпрограмма хочет переместить конец диапазона в конец строки, а единица перемещения wdLine
доступна только с Selection
. Подпрограмма сохраняет и восстанавливает текущий Selection
; если в этом нет необходимости, то временная переменная SelectionRange
и соответствующие операторы могут быть удалены.
Примечание: