/ / Código de relleno de celda condicional para aplicar a varias filas con diferentes condiciones para cada fila: excel, lógica, vba

Código de relleno de celda condicional para aplicar a varias filas con diferentes condiciones para cada fila: excel, logic, vba

Estoy tratando de escribir un código de relleno de celda condicionalusando VBA pero tengo algunos problemas de sintaxis. Me doy cuenta de que hay una pestaña para esto, pero necesito aplicar el código a varias filas diferentes con diferentes condiciones para cada fila para que el código sea más rápido para mis propósitos. Soy bastante nuevo en VBA, pero creo que tengo la lógica correcta al menos.

Básicamente, hay una columna principal con el valor con el que cada valor de las siguientes columnas debe ser probado.

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

(TEST VALUE) | (VALUE TO BE TESTED)| (VALUE TO BE TESTED)...

Si el valor es mayor o menor que el valor de prueba en 3 unidades, la celda debe ponerse roja, de lo contrario, debe ser verde.

Aquí esta lo que hice. Utilicé una macro de botón, pero si hay una manera de hacerlo automáticamente sin un botón, eso sería lo mejor.

Sigo recibiendo error de tiempo de ejecución "1004"; error definido de aplicación u objeto en la línea cinco. Así que básicamente estoy usando un conjunto anidado de bucles for. El primer bucle selecciona la fila y elige el valor de prueba para esa fila. ¿Tal vez estoy asignando la variable incorrectamente o necesito seleccionar la hoja de trabajo en la que estoy trabajando? La siguiente parte del ciclo prueba los siguientes valores en cada fila para ver si están dentro o fuera del rango especificado del valor de prueba. Por último, la celda se colorea según esta determinación.

CÓDIGO:

Private Sub CommandButton21_Click()
Dim i As Integer, j As Integer, T As Integer, R As Integer
"T is the cell we want to test, R is the Integer we want to use to test T
For i = 6 To 132
R = Cells(6, j).Value
For j = 4 To 1000 "loop through each column to test each cell (move to the right down selected row)
T = Cells(i, j).Value "test each cell
If T < (R - 3) Or T > (R + 3) Then
Cells(i, j).Interior.ColorIndex = 4
Else
Cells(i, j).Interior.ColorInex = 3
End If
Next j
Next i
End Sub

También intenté usar el editor de fórmulas de celda para aplicar este código, pero no creo que pueda cambiar el color de la celda de esta manera:

"=IF(OR(D6<$C$6-3,D6>$C$6+3),"CHANGE COLOR TO RED","CHANGE COLOR TO GREEN""

Respuestas

0 para la respuesta № 1

Mueva la siguiente línea una línea hacia abajo (es antes de que asigne un valor a J):

R = Cells(6, j).Value

0 para la respuesta № 2

esto no necesita usar vba. Solo usa formato condicional. En las pestañas, suponiendo que está utilizando Excel 2007 o superior, vaya a la pestaña de inicio y seleccione el formato condicional. Seleccione algo de las opciones o puede seleccionar una nueva regla. En la ventana emergente seleccione "use una fórmula para determinar qué celdas formatear ". Ingrese la ecuación como" = if ($ a $ 3 <= a4 + 3, TRUE, False) "y luego seleccione el formato que desee.