Función para cambiar de color una celda bajo criterios definidos

Ojala me puedan ayudar:

He hecho una función llamada colorear

Lo que hace es colorea la celda evaluada si se encuentra dentro del rango definido por cantidad, que esta en la columna B.

Osea que si la cantidad para valor1 es 8, al aplicar la funcion en cada celda con fila del valor1 y con columna desde I hasta R.

El resultado me tiene que resaltar las celdas correspondientes a valor1, osea resaltadas las 8 primeras y las restantes que queden en blanco.

Para valor2 y así sucesivamente.

A continuacion coloco la funcion que he realizado, pero no me funciona.

Function colorear() As String
Dim cantidad As Double
Dim inicio As Double
Dim fin As Double
cantidad = Cells(ActiveCell.Row, 2)
inicio = 9
fin = inicio + cantidad - 1
If ActiveCell.Column >= inicio And ActiveCell.Column <= fin Then
ActiveCell.Interior.Color = RGB(0, 255, 0)
colorear = ""
End If
End Function

El resultado que me debe quedar luego de aplicar a cada una de las celdas seria la siguiente:

2 Respuestas

Respuesta
1

Las funciones devuelven 'valores' no formatos.

Para resolver esta tarea contás con la herramienta Formato Condicional, con fórmulas. O si querés utilizar códigos para esto debes crear una Subrutina tal como te mencionó Valero.

Seleccioná tu rango y desde ficha Estilos, Formato Condicional, Nueva Regla, Utilice una fórmula...

En el campo escribí la fórmula tal como aparece en la imagen. Los signos $ son los que te permiten mantener el mismo formato en todo el rango.

=I$1<=$B2

Sdos y no olvides valorar la respuesta.

La consulta está aún abierta. Creo que te he dado la respuesta exacta a tus requerimientos.

Respuesta
1

·

Debe ser una limitación de Excel a las funciones definidas por los usuarios de no poder ejecutar ciertos comandos, todo ello en aras de la seguridad.

Prueba a hacer lo mismo con una Sub en lugar de una Function.

Con macros sería esto:

Sub colorear()
Dim i, fin As Integer
Const inicio = 9
For i = 2 To 7
    fin = Cells(i, "B")
    If fin >= inicio Then
        ActiveSheet.Range(Cells(i, inicio), Cells(i, fin)).Interior.Color = RGB(0, 255, 0)
    End If
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas