Как узнать, что достигнут конец документа в Word...

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

С помощью Selection двигаюсь вниз со строки на строку

Код: Выделить всё

Selection.MoveDown Unit:=wdLine, Count:=1
Как узнать, что курсор дошёл до последней строки в документе?
Аватара пользователя
AlexEL
Сообщения: 24
Зарегистрирован: 23 авг 2008, 06:44
Контактная информация:

Код: Выделить всё

If Selection.MoveDown(Unit:=wdLine, Count:=1) <> 1 Then ' конец
Макросы под заказ и готовый пакет: http://methodichka.ru/
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

AlexEL
спасибо. Никогда бы не догадался.
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

А если курсор никуда не двигать, как узнать, что курсор находится в конце документа?

Я вот такое решение придумал, если у кого есть ещё какие мысли, то пишите:

Код: Выделить всё

Sub m_4()
Dim oRange As Range
Set oRange = ActiveDocument.Range(Start:=ActiveDocument.Range.End - 1, End:=ActiveDocument.Range.End - 1)
If Selection.InRange(oRange) = True Then
    Debug.Print "End of document"
End If
End Sub
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

Вот такое в интернете нашёл:

Код: Выделить всё

Sub m_3()
If Selection.Start = ActiveDocument.Content.End - 1 Then
    Debug.Print "The end of a document"
End If
End Sub
Аватара пользователя
AlexEL
Сообщения: 24
Зарегистрирован: 23 авг 2008, 06:44
Контактная информация:

Я ползуюсь такой функцией:

Код: Выделить всё

Public Function Range_IsStoryEnd(ByRef seRange As Word.Range) As Boolean
' возвращает True, если область seRange в конце части

    Range_IsStoryEnd = False
    If seRange Is Nothing Then
    ElseIf seRange.End >= seRange.StoryLength - 1 Then
        Range_IsStoryEnd = True
    End If
        
End Function
Она универсальна, т.е. определяет конец не только главной части документа, но и колонтитулов, сносок, надписей и т.д.
Макросы под заказ и готовый пакет: http://methodichka.ru/
Ответить