Tengo una UDF que realiza unas comprobaciones y asigna a la celda donde está la función unas fechas.
Estoy intentando que en funcion de esas comprobaciones me ponga un fondo de celda de un color. Pero no lo consigo. Me da en la celda: #¡VALOR!
Esta es la funcion:
Function EFICACIA(Fecha As Date, Categoria As String, Plazo1 As String, Plazo2 As String, Plazo3 As String, Estado As String) As String
'1 - Inmediata
'2 - 1 mes
'3 - 3 meses
'4 - 6 meses
'5 - 1 año
revision = 3 '3 meses
If UCase(Categoria) = "ACCIDENTE CON BAJA" Or UCase(Categoria) = "ACCIDENTE SIN BAJA" Or UCase(Categoria) = "CURA LABORAL" Or UCase(Categoria) = "INCIDENTE" _
And UCase(Estado) = "SI" Then
P1 = Left(Plazo1, 1)
P2 = Left(Plazo2, 1)
P3 = Left(Plazo3, 1)
If P1 > P2 Then
Mayor = P1
Else
Mayor = P2
End If
If P3 > Mayor Then
Mayor = P3
End If
If Mayor = 1 Then 'Acción inmediata + 3 meses
EFICACIA = DateAdd("m", revision, Fecha)
End If
If Mayor = 2 Then '1 mes + 3 meses
EFICACIA = DateAdd("m", revision + 1, Fecha)
End If
If Mayor = 3 Then '3 meses + 3 meses
EFICACIA = DateAdd("m", revision + 3, Fecha)
End If
If Mayor = 4 Then '6 meses + 3 meses
EFICACIA = DateAdd("m", revision + 6, Fecha)
End If
If Mayor = 5 Then '1 año + 3 meses
EFICACIA = DateAdd("m", revision + 12, Fecha)
End If
If (CDate(EFICACIA) - Date) < 15 Then
ActiveCell.Interior.Color = RGB(255, 0, 0) ' rojo 'xlColorIndexNone sin color
'Target.Interior.Color = RGB(255, 0, 0)
Else
ActiveCell.Interior.xlColorIndexNone ' rojo 'xlColorIndexNone sin color
'Target.Interior.xlColorNone
End If
'If (CDate(EFICACIA) - Date) < 15 Then
'EFICACIA = "MENOS 15 DIAS"
'End If
Else
EFICACIA = "No Aplica"
End If
lo que me falla es este IF, que lo he probado con activecell y target, sin exito.
If (CDate(EFICACIA) - Date) < 15 Then
ActiveCell.Interior.Color = RGB(255, 0, 0) ' rojo 'xlColorIndexNone sin color
'Target.Interior.Color = RGB(255, 0, 0)
Else
ActiveCell.Interior.xlColorIndexNone ' rojo 'xlColorIndexNone sin color
'Target.Interior.xlColorNone
End If
Gracias
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
Hola ,
Tengo una UDF que realiza unas comprobaciones y asigna a la celda donde está la función unas fechas.
Estoy intentando que en funcion de esas comprobaciones me ponga un fondo de celda de un color. Pero no lo consigo. Me da en la celda: #¡VALOR!
Esta es la funcion:
Function EFICACIA(Fecha As Date, Categoria As String, Plazo1 As String, Plazo2 As String, Plazo3 As String, Estado As String) As String '1 - Inmediata '2 - 1 mes '3 - 3 meses '4 - 6 meses '5 - 1 año revision = 3 '3 meses If UCase(Categoria) = "ACCIDENTE CON BAJA" Or UCase(Categoria) = "ACCIDENTE SIN BAJA" Or UCase(Categoria) = "CURA LABORAL" Or UCase(Categoria) = "INCIDENTE" _ And UCase(Estado) = "SI" Then P1 = Left(Plazo1, 1) P2 = Left(Plazo2, 1) P3 = Left(Plazo3, 1) If P1 > P2 Then Mayor = P1 Else Mayor = P2 End If If P3 > Mayor Then Mayor = P3 End If If Mayor = 1 Then 'Acción inmediata + 3 meses EFICACIA = DateAdd("m", revision, Fecha) End If If Mayor = 2 Then '1 mes + 3 meses EFICACIA = DateAdd("m", revision + 1, Fecha) End If If Mayor = 3 Then '3 meses + 3 meses EFICACIA = DateAdd("m", revision + 3, Fecha) End If If Mayor = 4 Then '6 meses + 3 meses EFICACIA = DateAdd("m", revision + 6, Fecha) End If If Mayor = 5 Then '1 año + 3 meses EFICACIA = DateAdd("m", revision + 12, Fecha) End If If (CDate(EFICACIA) - Date) < 15 Then ActiveCell.Interior.Color = RGB(255, 0, 0) ' rojo 'xlColorIndexNone sin color 'Target.Interior.Color = RGB(255, 0, 0) Else ActiveCell.Interior.xlColorIndexNone ' rojo 'xlColorIndexNone sin color 'Target.Interior.xlColorNone End If 'If (CDate(EFICACIA) - Date) < 15 Then 'EFICACIA = "MENOS 15 DIAS" 'End If Else EFICACIA = "No Aplica" End If
lo que me falla es este IF, que lo he probado con activecell y target, sin exito.
If (CDate(EFICACIA) - Date) < 15 Then ActiveCell.Interior.Color = RGB(255, 0, 0) ' rojo 'xlColorIndexNone sin color 'Target.Interior.Color = RGB(255, 0, 0) Else ActiveCell.Interior.xlColorIndexNone ' rojo 'xlColorIndexNone sin color 'Target.Interior.xlColorNone End If
Gracias