Referencia de una celda

15/05/2006 - 19:12 por Nin | Informe spam
Que tal, buen dia a todos

Tengo un problemita, no tengo idea si es que se pueda hacer, pero expongo el
problema:

Hice una funcion bastante sencilla en un modulo, es un simple CASE que
evalua una cantidad, algo asi:

function miFuncion(fDato as integer) as string
Select case fDato
case 1 to 10
miFuncion = "Muy Mal"
case 11 to 20
miFuncion = "Mal"
case 21 to 30
miFuncion = "Regular"
case 31 to 40
miFuncion = "Bien"
case > 40
miFuncion = "Muy Bien"
end select
end function

Esta funcion la utilizao varias veces en diferentes hojas del libro.
Lo que necesito hacer, es que las celdas que contienen la formula, se
coloreen segun el resultado de la evaluacion, es algo asi como un formato
condicional, pero aqui son 5 colores. El problema es que no sé si sea posible
saber que celda contiene la funcion miFuncion, no se si sea posible algo asi:

function miFuncion(fDato as integer) as string
Select case fDato
case 1 to 10
miFuncion = "Muy Mal"
estacelda.Interior.ColorIndex = 3
case 11 to 20
miFuncion = "Mal"
estacelda.Interior.ColorIndex = 7
case 21 to 30
..
end select
end function.

¿Es posible?, esta formula esta en varias celdas del libro, y en cualquier
momento pueden cambiar de renglon si es que se agregan renglones...

El punto es que si el resultado cambia, el color que se asigna tambien cambie.

Espero haberme explicado, y espero que se pueda o alguien tiene alguna idea

Muchas Gracias!!!
 

Leer las respuestas

#1 KL
15/05/2006 - 19:39 | Informe spam
Hola Nin,

Tal como lo planteas no es posible. Una formula en celda (entiendo que tu funcion la usas desde una celda) no pude: crear, modificar las propiedades o eliminar objetos (en este caso la propiedad Interior del objeto Range). Tendras que crear un procedimiento aparte y asociarlo a uno o mas eventos de hoja, p.ej.: Worksheet_Change.

Ademas me parece que la funcion que expones puede sustituirse por una de las siguientes formulas bastante sencillas y mucho mas eficientes:

=BUSCAR(A1;{0\11\21\31\41};{"Muy Mal"\"Mal"\"Regular"\"Bien"\"Muy Bien"})

=ELEGIR(COINCIDIR(A1;{0\11\21\31\41});"Muy Mal";"Mal";"Regular";"Bien";"Muy Bien")

=INDICE({"Muy Mal"\"Mal"\"Regular"\"Bien"\"Muy Bien"};COINCIDIR(A1;{0\11\21\31\41}))

Saludos,
KL


"Nin" wrote in message news:
Que tal, buen dia a todos

Tengo un problemita, no tengo idea si es que se pueda hacer, pero expongo el
problema:

Hice una funcion bastante sencilla en un modulo, es un simple CASE que
evalua una cantidad, algo asi:

function miFuncion(fDato as integer) as string
Select case fDato
case 1 to 10
miFuncion = "Muy Mal"
case 11 to 20
miFuncion = "Mal"
case 21 to 30
miFuncion = "Regular"
case 31 to 40
miFuncion = "Bien"
case > 40
miFuncion = "Muy Bien"
end select
end function

Esta funcion la utilizao varias veces en diferentes hojas del libro.
Lo que necesito hacer, es que las celdas que contienen la formula, se
coloreen segun el resultado de la evaluacion, es algo asi como un formato
condicional, pero aqui son 5 colores. El problema es que no sé si sea posible
saber que celda contiene la funcion miFuncion, no se si sea posible algo asi:

function miFuncion(fDato as integer) as string
Select case fDato
case 1 to 10
miFuncion = "Muy Mal"
estacelda.Interior.ColorIndex = 3
case 11 to 20
miFuncion = "Mal"
estacelda.Interior.ColorIndex = 7
case 21 to 30
..
end select
end function.

¿Es posible?, esta formula esta en varias celdas del libro, y en cualquier
momento pueden cambiar de renglon si es que se agregan renglones...

El punto es que si el resultado cambia, el color que se asigna tambien cambie.

Espero haberme explicado, y espero que se pueda o alguien tiene alguna idea

Muchas Gracias!!!

Preguntas similares