¿Macro aplicar formato a palabras en una celda?

Buenos días expertos, estoy batallando por encontrar algo en la web sobre formatos automáticos con el editor de Visual Basic en Excel.
En el entendido de que no podemos modificar el entorno de Excel (no puedo aplicarle formato a palabras en una celda concatenada, por ejemplo), tengo una macro que me copia una celda en otra hoja como texto. En esta celda, sí puedo aplicar formato "individual" a cada palabra que quiero.
Lo que necesito es, una macro o procedimiento que me busque determinadas palabras o frases, y que les aplique formato automáticamente.
Por ejemplo, en la hoja "Finiquito", en la celda ya como texto, tengo lo siguiente: (sin cursiva)
"En la ciudad de Guatemala, el día trece de octubre del año dos mil siete, Yo, MARIO JOSE PEREZ RAMÍREZ, de veinticinco años de edad, SOLTERO, ABOGADO, con domicilio en la ciudad de Guatemala, me identifico con número de cédula A GUION UNO REGISTRO NUEVE MILLONES OCHOCIENTOS VEINTICINCO MIL..."
Y quisiera una macro que lo pusiera así:
"En la ciudad de Guatemala, el día trece de octubre del año dos mil siete, Yo, MARIO JOSE PEREZ RAMÍREZ, de veinticinco años de edad, SOLTERO, ABOGADO, con domicilio en la ciudad de Guatemala, me identifico con número de cédula A GUION UNO REGISTRO NUEVE MILLONES OCHOCIENTOS VEINTICINCO MIL..."
En una hoja aparte llamada "Prefiniquito", en donde se concatenan los datos automáticamente (como la fecha, el nombre, la edad, el registro, etc), tengo todos estos datos en celdas con fórmula. Por ejemplo, en la celda A1, tengo mi fórmula de convertir números a letras, con la edad del trabajador. Mi función en A1 es:
=convertnumletras(b1) -(en donde b1=25 en este caso).
La pregunta concisa es, cómo puedo en Vb tomar este dato de la hoja prefiniquito!A1, (¿veinticinco) buscarlo en la hoja Finiquito y colocarle el formato que quiero? En este caso, negrita y subrayado.
Muchas gracias.

1 Respuesta

Respuesta
1
Observando tu texto y lo que deseas, lo único que debes controlar es el numero de caracteres de la cadena que deseas manejar ( negrita y cursiva)
Es decir, el siguiente ejemplo pondrá en negrita cursiva la siguiente parte de la cadena:
Yo, Mario jose perez Ramírez
With ActiveCell.Characters(Start:=75, Length:=28).Font
.FontStyle = "Negrita Cursiva"
End With
Esto le dice a excel que de la cadena inicie en la intentar 75 y actúe sobre los 28 sgtes caracteres.
Así, solo deberás conocer los inicios y el largo de cada bloque de la cadena que necesitas manejar.
Una forma de conocer el largo de la cadena es mediante la instrucción len(cadena)
Que rapidez, agradezco mucho tu atención.
El problema que tengo, es que esos datos son variables. Podría conocer el número de caracteres de izquierda a derecha de la primer palabra a la que necesito aplicarle el formato (en el texto, sería la palabra "trece"), pero, ¿cómo podría conocer las demás?
Por lo mismo de que es una hoja automatizada, los datos variarán siempre. El nombre, por ejemplo, la próxima vez será LUIS MIGUEL DE JESÚS CONTRERAS LÓPEZ. Esto lo tengo en la hoja "Prefiniquito", con fórmula. ¿Pueden extraerse datos de esa hoja y aplicarlos a la macro?
Por ejemplo:
dim Nombre as string
nombre=worksheets("Prefiniquito").Range("C2")
Y en mi macro, ¿aplicarle formato a "Nombre"? ¿Cómo podría hacerlo?
Bueno yo lo haría así:
Esas frases variables las ubicaría secuencialmente en celdas independientes
Y luego concatenaría todas para conformar un solo bloque ( cadena)
Al estar esas frases aisladas en celdas independientes, conocerás en todo momento su extensión y si consideras que el complemento de la cadena ( la parte fija) tiene siempre la misma extensión, pues ya tienes los valores que necesitas.
También puedes utilizar la instrucción
Instr()
Esta instrucción te indica la intentar de una cadena dentro de otra.
Asi conoceras la ubicacion exacte de cierto bloque dentro de toda la cadena.
Ejemplo:
Instr(1,"mi amigo pedro","amigo")
da como resultado =4
Es decir la cadena "amigo" comienza en el cuarto carácter de la cadena "mi amigo pedro"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas