Как получить выделенный текст в VBA - PullRequest
1 голос
/ 16 января 2010

У меня есть макрос, который изменяет выделенный текст, и он назначен кнопке.

Он отлично работает, когда я запускаю его непосредственно из Visual Basic, но когда я нажимаю кнопку, кнопка получает фокус, и мой текст больше не выделяется, поэтому макрос меняет выбранный элемент на (кнопка).

Как я могу выделить текст и запустить макрос, нажав на кнопку, и при этом текст останется выделенным?

Ответы [ 3 ]

4 голосов
/ 18 января 2010

Способ сделать это - установить для свойства TakeFocusOnClick CommandButton значение False. Вот код, который я использую.

Private Sub CommandButton1_Click()
    Dim Sel As Selection
    Set Sel = Application.Selection
    If Sel.Type <> wdSelectionIP Then
        MsgBox Sel.Text
    End If
End Sub
3 голосов
/ 16 января 2010

Кнопка встроена в документ? Вам может потребоваться поместить его в форму, которая загружается в верхней части окна Word или на панели меню / панели инструментов, чтобы щелчок по нему не влиял на выбор в самом документе.

Edit:
Я думаю, что вы можете использовать Application.Selection.Previous, чтобы получить то, что вам нужно. Вы можете использовать это для восстановления выбора после события щелчка или для действия с этим разделом документа, или с обоими.

Я предполагаю, что это доступно в предыдущих версиях Word, но подтвердило свое присутствие только в 2007 году.

1 голос
/ 10 февраля 2011

Вам необходимо изменить TakeFocusOnClick на «False» в настройках кнопок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...