¿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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 MazingerZ
22/07/2005 - 15:53 | Informe spam
Muchas Gracias HM. Revisaré el tema de los formatos condicionales...


gracias por tu tiempo.
atte.
MarioZ


"Héctor Miguel" escribió en el mensaje
news:
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.

Respuesta Responder a este mensaje
#3 tino
22/07/2005 - 23:35 | Informe spam
Pues yo copio la formula que pones en C3 y me da error, me sale ? Nombre. A
ti te funciona esa formula?




"MazingerZ" escribió en el mensaje
news:
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.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida