Saltar al contenido

Colorear celda si contiene formato negrita


Gerson Pineda

Recommended Posts

publicado

Hola

A raiz de un tema del foro, es que se me ocurrio elaborar este aporte, y bueno como acostumbro/trato que si es de automatizar procesos con VBA, el codigo/macro sea lo mas sencillo/simple posible para a la hora que alguien la utilice no le dificulte mucho modificar

Se trata que en la hoja y el rango usado una vez apliquemos "negrita" y luego nos hubicamos en cualquier otra celda, la macro de evento va colorear dicha celda

Espero sea de utilidad a mas de uno

Saludos

Colorear celda si tiene formato negrita_GP.xls

publicado

La pena es que se demora mucho cuando el rango es un poco grande, y otro problema es que pierde el color original al cambiar de negrita a normal.

¡ Ay estos "niños formulianos" que se ponen a hacer cosas de personas mayores ! jejeje

"La venganza es un plato que se degusta frío"

Paz y amor

Negrita.xls

publicado

JAJAJA ahora me has hecho reir de verdad y muy bueno el aporte pero para que usar una hoja auxiliar no entiendo si podemos trabajar solo con el rango usado o simplemente especificar el rango ummm creo que debes pensar en no cargar de mucha informacion los libros!

Y ya que para ti soy un niño lo cual te agradezco jaja y por ende revisa porfavor la nueva propuesta y veras lo que un niño es capaz de hacer jaja "en poco tiempo"

Saludos y te mando muchos ojos y paciencia pues te llevaras una sorpresa! me gusta... me gusta...!

Colorear celda si tiene formato negrita_GP.zip

publicado

Buenas Gerson,

Se te está pegando el ingenio de Macro Antonio xD. Por cierto, ¿Podrias explicarme por que tu codigo hace algo parecido al siguiente ejemplo?

SI "sale cara" ENTONCES

"Gano yo"

EN CASO CONTRARIO

"Gano yo"

¿No seria mas facil poner "Gano yo" directamente?

Saludos

publicado

Si pareciera ser algo como si es es si si, si es no si, pero no es asi jeje!

Primero elimina la parte de "Else" de la macro y luego te lo pongo sencillo, suponiendo que el rango usado o especifico sea "A1:B1" y ponemos "negrita" a la celda A1 y tu como usuario te ubicas (con el raton/mouse no con las teclas) en la celda G1... fijate que sucede?

He actualizado el archivo en la respuesta # 4, ahora esta condicionado a que si hay negrita y no tiene texto que no lo coloree!

Saludos

publicado

¡¡¡ Gracias Dios mio por haberme escuchado !!! ¡¡¡Por fin un formuliano que piensa !!!

Ahora si que creo en la teoría de la evolución de la especie humana,............jajaja

Ahora ya en serio, brillante, Gerson, ..., simplemente brillante.

Aunque te propongo un mix de ambas macros, le he añadido a la tuya el controlar solamente el ultimo rango seleccionado en lugar de recorrer todo el rango completo. De esta manera conseguimos agilizarla cuando la hoja es muy grande.

Te subo posiciones en mi ranking de "Leyendas del foro",..............jajaja

Saludos a todos

Colorear celda si tiene formato negrita_GP II.xls

publicado
Primero elimina la parte de "Else" de la macro y luego te lo pongo sencillo, suponiendo que el rango usado o especifico sea "A1:B1" y ponemos "negrita" a la celda A1 y tu como usuario te ubicas (con el raton/mouse no con las teclas) en la celda G1... fijate que sucede?

Siguiendo tus instrucciones sucede lo que dices efectivamente. Pero creo que no has entendido lo que intentaba decirte.

Si pones una condicion cuyo desenlace es X, y como alternativa a la condicion dices tambien que el desenlace es X, estas diciendo que pase lo que pase, siempre va a ocurrir X, por lo que sobra las condiciones y directamente se ejecuta la accion. Como consecuencia todos los (Pre y Pos)-Operaciones no son necesarios para desencadenar la accion.

Segun los principios que expones, tu macro seria exactamente la misma omitiendo gran parte del codigo:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range
For Each cel In UsedRange
If cel.Font.Bold And cel.Value <> "" Then
With cel.FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:=1
.Item(1).Interior.ColorIndex = 6
End With
End If
If Not cel.Font.Bold And cel.Value <> "" Then cel.FormatConditions.Delete
Next
End Sub[/CODE]

Si tengo razon, me invitas a una cerveza. En caso contrario, me invitas a una cerveza.

Saludos!

publicado

Tienes razon funciona igualmente! lo mio quedaria como ambiguo verdad!?, buena evaluacion de tu parte, creo que me enrede jeje

Ahora eso si valga aclarar que si el usuario solo necesita trabajar en un rango especifico, debe utilizar la siguiente linea, pues de lo contrario la macro (tal como la propones) estara corriendo cada vez que el usuario se mueva o seleccione cualquier celda (sea fuera o dentro del rango especificado ojo con eso, pues es nada mas para consumir menos recursos)


Set rango = Range("A1:B24")
If Not Intersect(Target, rango) Is Nothing Then[/PHP]

Con este metodo si le aplicamos a una celda "negrita" no se va a colorear si nos ubicamos simultaneamente con el mouse/raton fuera del rango especifico, como tambien no va a pintar otra celda fuera del rango, espero no confundir mas a los demas jeje ni a ti

Saludos

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.