vba - variable - macros excel
Insertar texto antes y después de la selección y establecer el estilo del nuevo texto (2)
Puedo insertar texto antes y después de la selección usando:
Selection.InsertBefore "start"
Selection.InsertAfter "end"
Pero no tengo control sobre el estilo del texto insertado. ¿Cómo puedo establecer el nuevo texto insertado en un estilo específico (y dejar el texto original seleccionado tal como está)?
A continuación hay dos códigos separados para manejar Insert After e Insert Before. Una vez que insertas el texto, dependiendo de dónde esté insertado, debes seleccionar el texto insertado y luego cambiar el estilo.
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
Aquí hay un ejemplo simple:
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