Trabajo De Excel

Páginas: 6 (1448 palabras) Publicado: 30 de septiembre de 2012
Color de fondo.
Aquí se nos muestra una tabla o una imagen creada desde Excel, y se nos muestra cómo hacerla:


Se empieza con la columna B. Primero se colorear el fondo de las celdas B2:B5.y se usan colores básicos, correctamente usando el valor RGB. Esto se hace seleccionando Color de relleno ⇒ Más colores ⇒ Personalizado ⇒ Modelo de color: RGB. Las celdas y los colores son lossiguientes (R:Rojo, V:Verde, A:Azul):
• Celda B2: R:255, V:255, A:255
• Celda B3: R:0, V:0, A:255
• Celda B4: R:0, V:255, A:0
• Celda B5: R:0, V:0, A:255
Ahora, en el rango de celdas (B2:B5) se pone un formato condicional para que si el contenido de la celda es mayor que 3, pinte el fondo de verde y el texto de blanco. Así que, se selecciona dichas celdas, se pone que sean números sin decimales ynos dirigimos a Formato condicional ⇒ Administrar reglas ⇒ Nueva regla ⇒ Utilice una fórmula. Y donde dice "Dar formato a los valores donde esta fórmula sea verdadera", escribe lo siguiente:
=(B2>3)
Y ahora se pulsa el botón de abajo de formato y se pone de relleno el color verde (R:0, V:255, A:0) y letra en blanco. Excel automáticamente reconoce esa celda relativa B2 y cuando calcula elformato, lo hace con el contenido individual de cada otra celda. Se vera que esto luego es un problema con VBA. En estos momentos tiene que quedar la columna B tal cual está en la imagen.

Lo primero que se observa es que la celda B5 tiene un formato condicional y además su fondo real es azul. Para diferenciar el formato condicional he puesto la letra en blanco.
Obtener el color de fondo con VBAAquí viene el primer problema. ¿cómo puedes saber el color de fondo de una celda? El color de fondo real (sin condición) nos lo da rápidamente VBA. Vamos a ver la columna C. Se va hacer una simple función y en cada celda de C2:C5 se pega lo siguiente:
GetColor(celda)
Por ejemplo en la celda C2 se pone esto
=GetColor(B2)
Y ahora se crea una simple macro, y se modifica creando una función y sedeja así de sencilla:
Public Function GetColor(ByVal celda As Range)
Select Case celda.Interior.ColorIndex
Case 2
GetColor = "BLANCO"
Case 4
GetColor = "VERDE"
Case 5
GetColor = "AZUL"
Case Else
GetColor = "OTRO"
End Select
End Function

El resultado tiene que ser igual a la columna C de la imagen.Obtener el color de fondo condicional con VBA

Como se puede observar, la sencilla forma anterior no da el color condicional de una celda. Para esto se puede utilizar lo siguiente:
celda.FormatConditions(1).Interior.ColorIndex
Con eso obtienes el color del formato condicional pero no el real que vemos en pantalla. Entonces, ¿cómo se obtiene el color que realmente vemos? Hay querecurrir en VBA a saber si la condición del formato condicional se cumple o no se cumple.
Si la condición se cumple, el color de la celda es:
celda.FormatConditions(1).Interior.ColorIndex
Si la condición NO se cumple, el color de la celda es:
celda.Interior.ColorIndex
En VBA para saber el resultado de dicha condición se usa lo siguiente:
Application.Evaluate
Pero esto también conlleva unpequeño problema, y si observamos la imagen anterior, veremos que el color condicional recibido en la celda D5 es azul cuando debería ser verde, ¿por qué? Porque se observa que en VBA la fórmula evaluada es la siguiente:
=(B2>3)
Este es el problema, que la fórmula condicional que pusimos en el formato, en VBA solo se extrae en modo de direcciones absolutas, es decir, solo para una determinadacelda. Por eso, si ves la imagen anterior, verás que la fórmula evaluada es la misma en todas. En el siguiente artículo mostraré cómo resolver esta situación, inspecciones de 4 códigos, el código VBA utilizado y mi opinión.





Formato condicional:
Siguiendo con el mismo ejercicio, para obtener el color real que vemos en pantalla y que es el resultado de evaluar la condición del "formato...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Trabajos De Excel
  • Trabajos De Excel
  • trabajo excel
  • trabajo de excel
  • Trabajo de excel
  • Trabajo Excel
  • TRABAJO DE EXCEL
  • trabajo excel

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS