string - prefijo - formato de texto en excel
Excel VBA: agregue el símbolo formateado al texto en una celda, manteniendo los formatos de caracteres del texto preexistente (2)
para el color: (por alguna razón, colorindex a veces devuelve colores incorrectos, por lo que formateo la celda y creo una macro para obtener el color que quiero)
.Color = -16776961
Esto continúa desde mi pregunta en excel vba seleccione penúltimo personaje en una celda
Estoy escribiendo una macro para insertar una marca roja (o flecha abajo) después del texto existente en una celda.
El código que encontré para insertarlo elimina el formato de caracteres personalizado del contenido original de la celda (en negrita subrayado en rojo, etc.).
ActiveCell.FormulaR1C1 = ActiveCell & " P "
No puedo descifrar cómo insertar los caracteres y conservar los formatos de caracteres preexistentes en la celda (algunos textos en rojo, otros textos en negrita, otros textos pueden estar subrayados).
Encontré una macro que reemplaza los caracteres que retienen los formatos existentes, y me pregunto si esto podría cambiarse para agregar la marca y los espacios al final de la celda y darles formato.
Encontré otra macro que copia el formato de cada carácter en una nueva celda después de copiar el valor, en Combinar contenido de 2 celdas de Excel manteniendo intacto el formato de caracteres (usando VBA) , si se puede modificar para volver a formatear los caracteres en el original celular ... ¡Estoy un poco perplejo!
¿O tal vez hay una manera aún más simple?
Cualquier asistencia agradecida.
============================================================================================================================================================================
STRINGTODELETE = InStr(1, cell.Value, " ") ''define + find string to delete, ANYWHERE in cell (TODO inputbox)
STRINGTODELETE_LENGTH = 1 ''define length of string to delete (TODO get length from input)
Do Until STRINGTODELETE = 0 ''loop within cell until no more occurences found
cell.Characters(STRINGTODELETE, STRINGTODELETE_LENGTH).Delete ''remove found occurrence of SPECIFIED STRING
cell.Characters(STRINGTODELETE, 0).Insert Chr(10) ''insert line break where SPECIFIED STRING used to be
EDITADO : El uso de ActiveCell.Value
o ActiveCell.Formula
cambiará cualquier formato ESPECIAL que haya tenido (mi publicación inicial se pasó por alto). Sin embargo, como su investigación se muestra indirectamente, puede cambiar el texto mediante character.insert, pero debe tener la longitud del carácter de dónde insertar para evitar cambiar el formato personalizado.
Pruebe esto en lugar del valor o la configuración de la fórmula.
ActiveCell.Characters(ActiveCell.Characters.Count + 1, 1).Insert (" P ")
A continuación, procede a actualizar el penúltimo carácter con un enfoque similar (esto es esencialmente editar 1 carácter antes del último carácter).
With ActiveCell.Characters(ActiveCell.Characters.Count -1, Length:=1).Font
.Name = "Wingdings 2"
.FontStyle = "Bold"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With