Contar caracteres y sombrear

Necesito una macro que cuente los caracteres de varias celdas, y a partir de uno que fije (por ej que se pase de 20 caracteres)  subraye los excedidos en negrita y a la vez me señale la celda de un color que sombree
{"Lat":40.425936,"Lng":-3.56546389999994}

1 Respuesta

Respuesta
1
Aquí tienes la macro. Es un ejemplo para que la ejecutes en la celda activa. En mi ejemplo he estipulado un máximo de 10 caracteres y a partir del 11 los pondrá en negrita. Escribe una frase larga en una celda cualquiera, posiciónate encima de ella y después ejecuta la macro. Este ejemplo lo tendrás que trasladar mediante un bucle while-wend para que lo haga en varias celdas.
Sub negrita_excedida()
largo = Len(ActiveCell)
Max = 10
exceso = largo - Max
ActiveCell.Characters(Start:=Max + 1, Length:=exceso).Font.Bold = True
ActiveCell.Interior.ColorIndex = 8
End Sub
Si te ha funcionado no olvides finalizar y puntuar.
Es genial, funciona perfecto. Ya te tengo que consultar todo: Como hago lo del bucle ?????while-wend para que me ejecute la macro en varias filas cuyo numero puede variar desde a1 a A10000 o incluso más, porque me has leído el pensamiento.
Pues, por ejemplo si los datos a examinar están en la columna A y empiezan desde la celda a2 tienes que usar la siguiente macro:
Sub negrita_excedida()
range("a2").select
do while activecell.value <>""
largo = Len(ActiveCell)
Max = 10
exceso = largo - Max
ActiveCell.Characters(Start:=Max + 1, Length:=exceso).Font.Bold = True
ActiveCell.Interior.ColorIndex = 8
activecell.offset(1,0).select
loop
End Sub
Gracias luismondelo, la macro funciona muy bien pero tengo dos matices en los que quizás me puedas ayudar:
1. La macro pinta de color todas las celdas, tengan o no más caracteres de 10. Debería pintar sólo las que superen 10 caracteres.
2. ¿existe alguna forma de que coloree sólo el texto resaltado en negrita, es decir, el excedido del 10 caracteres? De esta forma prescindiríamos de colorear toda la celda.
Gracias y saludos.
Prueba ahora con esta macro, tiene unos retoques:
(En mi ejemplo los datos empiezan en A2)
(Si no quieres que pinte el fondo de la celda tienes que borrar esta fila: ActiveCell.Interior.ColorIndex = 8)
Sub negrita_excedida()
range("a2").select
do while activecell.value <>"" 
largo = Len(ActiveCell)
if largo >10 then
Max = 10
exceso = largo - Max
ActiveCell.Characters(Start:=Max + 1, Length:=exceso).Font.Bold = True
ActiveCell.Interior.ColorIndex = 8
end if
activecell.offset(1,0).select
loop
End Sub
Hola, todo funciona bien, pero sólo quisiera que se colorearan las celdas que superan el excedido, o sea, las que tienen mas de 10 caracteres.
ActiveCell.Interior.ColorIndex = 8 debería funcionar sólo si los caracteres superan el excedido de 10. En el supuesto caso de que no superen deberían permanecer sin color.
¿tienes la solución? muchas gracias
Finaliza y puntúa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas