Saltar al contenido

Cambio de formato de celda con UDF


Recommended Posts

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

publicado

Hola

La UDF te dará como resultado una formula, que en tu caso, es de tipo "String" es decir es "texto"

Para llevar a cabo el formato que deseas, debes ejecutarlo fuera de la UDF

Hasta puedes intentarlo con formato condicional

 

Saludos 

Archivado

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

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.