Ethylparaben
Ethylparaben

Reputation: 11

How to get selected text in VBA

I have a macro that changes the selected text, and I have it assigned to a button.

It works perfectly when i run it directly from visual basic, but when I click the button, the button gets the focus and my text is no longer selected so the macro change the selected element to (button).

How can I select the text and run the macro by clicking on the button and still have the text selected?

Upvotes: 1

Views: 15240

Answers (3)

David
David

Reputation: 21

You need to change TakeFocusOnClick to "False" in the Button Preferences.

Upvotes: 1

Todd Main
Todd Main

Reputation: 29155

The way to do this is to set the set the TakeFocusOnClick property of the CommandButton to False. Here are is the code I use.

Private Sub CommandButton1_Click()
    Dim Sel As Selection
    Set Sel = Application.Selection
    If Sel.Type <> wdSelectionIP Then
        MsgBox Sel.Text
    End If
End Sub

Upvotes: 4

Jay
Jay

Reputation: 57959

Is the button embedded in the document? You may need to put it on a form that loads on top of the Word window or in a menu/toolbar, so that clicking it does not affect the selection in the document itself.

Edit:
I think you can use Application.Selection.Previous to get at what you need. You could use this to restore the selection after the click event, or to act upon that section of the document, or both.

I assume that this is available in previous versions of Word, but have only confirmed its presence in 2007.

Upvotes: 3

Related Questions