1

Тема: Методы модификации диапазона Range в Word

Здравствуйте. Как выбрать прерывающийся диапазон наподобие выделения выполненного с нажиманием Ctrl. Спасибо.

2

Re: Методы модификации диапазона Range в Word

o5andrey пишет:

Здравствуйте. Как выбрать прерывающийся диапазон наподобие выделения выполненного с нажиманием Ctrl. Спасибо.

Не слышал о существовании такого способа. Если откроете этот философский камень - сообщите  smile . К сожалению, ренж непрерывный. Вопрос - зачем вам это? Уверен, что можно реализовать задачу иначе.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3

Re: Методы модификации диапазона Range в Word

Ну ладно, понял. Не понял как работает MoveWhile, будто не работает...

Moves the specified range while any of the specified characters are found in the document.

Пока любой из заданных символов не встретится... А какое отличие от  moveuntil

...range until one of the...

4

Re: Методы модификации диапазона Range в Word

Do while - действие происходит пока истинно выражение, т.е. пока выполняется условие - двигаемся дальше. Do until - действие происходит до тех пор пока не встретим условие. А так практически идентичны.

i = 10
Do While i = 10
    i = i + 1
Loop

Пока i = 10 будет добавляться по единице

i = 10
Do Until i = 10
    i = i + 1
Loop

Если i = 10, то не будет добавляться
Вообще в интернетах есть на русском про это. Сам обычно не использую Do until.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5

Re: Методы модификации диапазона Range в Word

Да не, я имел ввиду метод Range.MoveWhile...

6

Re: Методы модификации диапазона Range в Word

o5andrey пишет:

Да не, я имел ввиду метод Range.MoveWhile...

По аналогии только не Do while, а Move while. Двигается область пока условие соблюдается
Do until Двигается область, пока не обнаружится соблюдение условия.
hmm

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

7

Re: Методы модификации диапазона Range в Word

Двигается область пока условие соблюдается

With Selection.Paragraphs(1).Range
    .Find.Text = "test"
    .Find.Wrap = wdFindStop
    .Find.Execute
    '.MoveUntil Cset:="t", Count:=100
    .MoveWhile Cset:="t" Count:=10 ' wdForward
    .select
End With

.MoveUntil работает если присутствует .select
При .MoveWhile выделяется слово test и всё.

8

Re: Методы модификации диапазона Range в Word

А, вроде работает, если написать testttt: ставит курсор в конец.

9

Re: Методы модификации диапазона Range в Word

в конец этого слова

10

Re: Методы модификации диапазона Range в Word

Пример из справки тоже работает, только нужно добавлять .select

Dim aRange As Range
Set aRange = ActiveDocument.Characters(1)
aRange.MoveWhile Cset:="Tt", Count:=wdForward
aRange.Select
End Sub

11

Re: Методы модификации диапазона Range в Word

Как пользоваться методом .Collapse?

12

Re: Методы модификации диапазона Range в Word

Получается collapse нужен чтобы уничтожить range. А я сначала подумал что он позволяет сворачивать блок текста, но похоже это в ворде нельзя.

With Selection.Paragraphs(1).Range
    .Find.Text = "test"
    .Find.Wrap = wdFindStop
    .Find.Execute
    .Collapse Direction:=wdCollapseEnd
    .MoveEnd Unit:=wdCharacter, Count:=10
    .Select
End With

Выделяет 10 символов после слова test. А если без collapse - то выделяет их вместе со словом test.