[VBA][WORD] Детский вопрос

Shamil95

Задача: при запуске макроса должна создаваться закладка, название которой есть слово ближайшее к курсору.
 
Sub add_bookmark
Selection.Collapse
Selection.Extend
Selection.Extend

Dim strBmk As String
strBmk = Selection.Text
'MsgBox strBmk

With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, [b]Name:=strBmk[/b]
.DefaultSorting = wdSortByLocation
.ShowHidden = False
End With
End Sub

Проблема: кусок, который я попытался выделить, вызывает ошибку "Неверное имя закладки". То же происходит и если написать Name:=Selection.Text. Если имя передавать не через переменную, а напрямую, строкой в кавычках, то всё работает. WTF?
Первый мой опыт с VBA, так что подозреваю, что ошибка дурацкая.

stm7583298

Selection.Value ?

Shamil95

Selection.Value ?
Э-э, у Selection нет такого свойства или метода. Это ж не эксель, а ворд 2007.

zorin29

из того, что мне удалось нагуглить, следует, что неправильное имя bookmark-а - это пустая строка. У тебя, случайно, Selection.Text не пуст?..

Shamil95

Не пуст. Специально проверял, выводил в MsgBox.

Anna74

IMHO ты не срезал концевой пробел у слова в strBmk.
Если ты явно напишешь для теста

'MsgBox strBmk
strBmk = "ляля"

то ошибки нет, а если

'MsgBox strBmk
strBmk = "ляля "

то она возникнет в твоём коде

Anna74

замени свой MsgBox на

MsgBox "!" & strBmk & "!"

увидишь пробел в конце. Кстати, когда курсор в конце текста документа (или абзаца? - у меня текст из одной строки - лень длиннее писать :) ) вообще конец строки или пустой strBmk у тебя.
Оставить комментарий
Имя или ник:
Комментарий: