Как установить Selection.Start в VBA? - PullRequest
1 голос
/ 02 января 2012

У меня проблема с настройкой выделения внутри таблицы. У меня есть функция, которая просматривает документ слово за словом для анализа его содержимого в поисках конкретных шаблонов. К сожалению, в таблицах Char(7) символ прерывает выделение - при его выделении все ячейки становятся выделенными автоматически. Чтобы обойти эту проблему, я храню правильный параметр Selection.Start.

Вот мой код:

If InStr(Selection.text, Char(7)) > 0 Then
    Selection.start = selStart
    Selection.End = selStart + (Len(tekst) - 2)
End If

Ну, это не помогло. При отладке я вижу, что selStart - это 441, а Selection.Range.Start - это 427 (427 будет началом ячейки, когда слово, которое я ищу, находится на позиции 441). На следующем этапе ... Selection.Start по-прежнему 427.

Я также попробовал другой подход, используя MoveStart и MoveEnd, но независимо от того, что я делаю, Selection.Start не меняется.

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Ну конечно! Я не могу переместить Selection.Start, пока Chr (7) находится в выделении! Все отлично работает, когда я двигаю Selection.End fisrt ...

If InStr(Selection.text, Chr(7)) > 0 Then
    Selection.MoveEnd Unit:=wdCharacter, Count:=-1
    Selection.start = selStart
End If
0 голосов
/ 03 января 2012

Возможно, нужен другой подход: вместо того, чтобы манипулировать выделением, выполните итерацию коллекции Document.Words. Что-то вроде:

Sub PreccessAllWords()
    Dim doc As Document
    Dim wd As Range

    Set doc = ActiveDocument
    For Each wd In doc.Words
        If wd.Text = "Foo " Then
            wd.Text = "Bar "
        End If
    Next wd
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...