¿Que estoy haciendo mal?

22/07/2005 - 06:32 por MazingerZ | Informe spam
Sres:
Recurro a uds., para ver si alguien tiene el tema mas claro
A1 B2 C3
01/07/2005 20/07/2005 =fn_Datediff(A1;B2;30;20;10)

En la celda C3 está el calculo de la difencia en días entre ambas fechas. El
tema es que tengo que aplicar una formula que para determinados valores de
C3, la celda quede pintada de un determinado color. (Rojo, amarillo o
Verde)

La funcion que hice es la siguiente, el problema es que no me deja la celda
pintada

¿ Que estoy haciendo mal ? ¿ Porque no me funciona?


iRr = (Rango rojo), un valor en ese rango, la celda debe quedar de color
rojo. Idem para iRa (Rango amarillo) y iRv (Rango Verde)

Function fn_Datediff(dF1 As Date, dF2 As Date, iRr As Integer, iRa As
Integer, iRv As Integer)
Dim iDif As Integer

iDif = DateDiff("d", dF1, dF2)

If iDif > 0 And iDif <= iRv Then
pr_Pinta ActiveCell, C_VERDE
End If

If iDif > iRv And iDif <= iRa Then
pr_Pinta ActiveCell, c_AMRILLO
End If

If iDif > iRa And iDif <= iRr Then
pr_Pinta ActiveCell, C_ROJO
End If

fn_Datediff = iDif

End Function


Sub pr_Pinta(r As Range, c As Integer)
r.Select
Selection.Interior.ColorIndex = c
End Sub


Gracias.
atte.
Mario.
 

Leer las respuestas

#1 Héctor Miguel
22/07/2005 - 07:31 | Informe spam
hola, Mario !

... ver si alguien tiene el tema mas claro...
A1 B2 C3
01/07/2005 20/07/2005 =fn_Datediff(A1;B2;30;20;10)
En la celda C3 esta el calculo de la difencia en dias entre ambas fechas.
El tema es... aplicar una formula que para determinados valores de C3... quede pintada de un determinado color. (Rojo, amarillo o Verde)
La funcion que hice es la siguiente, el problema es que no me deja la celda pintada
Que estoy haciendo mal? Porque no me funciona? [...]



1) cuando tu procedimiento [function] 'trata' de 'pasarle' al codigo [procedimiento Sub] 'que pinta' de colores...
=> el argumento 'ActiveCell' NO ES 'necesariamente' la celda que esta haciendo uso de 'la funcion' [personalizada] < [ademas]... la 'verdadera' razon por la cual la funcion [la que usas y cualquiera otra] NO 'hace... lo que quieres'... ES...
2) a los procedimientos 'Function' [por excel-vba] les esta 'prohibido' modificar propiedades de rangos y el entorno de la aplicacion :-(
=> para estos 'casos' [generalmente] se utiliza codigo en el modulo de eventos [p.e.] de 'la hoja' donde necesitas 'colorear' celdas < o... [mas 'sencillo' aun]... puedes usar los formatos condicionales para que 'segun' un resultado, se aplique 'determinado' formato ;)

si cuaquier duda... comentas?
saludos,
hector.

Preguntas similares