Flash
Flash

Reputation: 16703

Insert text before and after selection and set style of new text

I can insert text before and after the selection using:

Selection.InsertBefore "start"
Selection.InsertAfter "end"

But I have no control over the style of the inserted text. How can I set the new, inserted text to a specific style (and leave the original selected text as it is)?

Upvotes: 2

Views: 28699

Answers (2)

Doug Glancy
Doug Glancy

Reputation: 27478

Here's a simple example:

Sub test()
Dim StartingCount As Long
Dim InsertBeforeCount As Long

With ActiveDocument
    StartingCount = .Characters.Count
    Selection.InsertBefore "start"
    InsertBeforeCount = .Characters.Count - StartingCount
    .Range(1, InsertBeforeCount).Font.Bold = True
    Selection.InsertAfter "end"
    .Range(StartingCount + InsertBeforeCount, .Characters.Count).Font.Italic = True
End With
End Sub

Upvotes: 1

Siddharth Rout
Siddharth Rout

Reputation: 149295

Below are two separate code to handle Insert After and Insert Before. Once you insert the text then depending on where is it inserted you have to select the inserted text and then change the style.

Sub InsertAfter()
    Dim wrd As String
    Dim rng As Range

    wrd = "End"

    Set rng = Selection.Range

    rng.InsertAfter wrd

    '~~> Remove selection. This will move the cursor at end of selected word
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    '~~> Select the inserted word
    Selection.MoveRight Unit:=wdCharacter, Count:=Len(wrd), Extend:=wdExtend
    '~~> Change Style
    Selection.Style = ActiveDocument.Styles("List Paragraph")
End Sub

Sub InsertBefore()
    Dim wrd As String
    Dim rng As Range

    wrd = "Start"

    Set rng = Selection.Range

    rng.InsertBefore wrd

    '~~> Remove selection. This will move the cursor at begining of inserted word
    Selection.MoveLeft Unit:=wdCharacter, Count:=1
    '~~> Select the inserted word
    Selection.MoveRight Unit:=wdCharacter, Count:=Len(wrd), Extend:=wdExtend
    '~~> Change Style
    Selection.Style = ActiveDocument.Styles("List Paragraph")
End Sub

Upvotes: 5

Related Questions