Saltar al contenido

Cambio de formato de celda con UDF

publicado

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

Featured Replies

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.