В вашем коде вы используете StartRange.GoTo
, но в следующей строке снова используется StartRange
, что просто принимает исходное значение.
Возможно:
Set newRange = StartRange.GoTo(What:=wdGoHeading, Which:=wdGoToPrevious, Count:=1)
nowLevel = newRange.Paragraphs(1).OutlineLevel
В зависимости от того, что вы хотите сделать, может быть применимо следующее:
Set StartRange = StartRange.GoTo(What:=wdGoHeading, Which:=wdGoToPrevious, Count:=1)
nowLevel = StartRange.Paragraphs(1).OutlineLevel
Редактировать: Дополнительная информация на основе вопроса в комментариях.
Некоторые методы диапазона (такие как MoveStart
и Expand
) работают для активного изменения параметров диапазона. Метод GoTo
- это функция, которая возвращает объект Range
, а не действие, изменяющее указанный объект. Однако документация MSDN не совсем ясна в отношении этой последней части и подразумевает, что использование метода GoTo
перемещает диапазон. GoTo
перемещает точку вставки, но это не то же самое, что перемещение Range
.
Soapbox: я не доволен новым контентом MSDN - теперь он мягкий и предоставляет только основные описания. Более старую подробную информацию (включая ограничения, крайние случаи и потенциальные факторы ошибок) редактируют - возможно, некоторые ее считают улучшением .