visual variable valor una tomar insertar escribir desde dato cuadro combinado celda asignar vba ms-word word-vba

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