Como puedo lograr que una celda cambie cuando cambias 3 celdas de manera no simultanea HELP

De aprendiz/novato) es a partir de una automacro que no puedo resolver dado, que me he olvidado y mucho del Vba en excel... ¿en qué le estoy errando o que me esta faltando? Como puedo hacer que la celda H33 y las filas de abajo cambien, si algunas de los rangos de celda C33:C64 o G33:G64, ¿o la celda $N$7 modifican su valor? Les copio el código!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim fila As Integer
Dim caso As Integer
fila = Target.Row
'verifico que el cambio sea en la columna C
If Target.Column = 3 Then
'verifico que ademas el cambio sea en el rango de filas 33 hasta 64
If Target.Row >= 33 And Target.Row <= 64 Then
'Analiza las opciones de las condiciones y les atribuye un numero de caso
If Target.Value = "" Then
caso = 1
Else
If Target.Value >= 13.2 And Target.Value <= 33 Then
caso = 2
Else
If Target.Value > 33 And Target.Value <= 66 Then
caso = 3
Else
If Target.Value > 66 And Target.Value <= 500 Then
caso = 4
End If
End If
End If
End If
Select Case caso
Case 1 'celda vacia
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = ""
Case 2 'entre 13.2 y 33
'evaluo si la distancia de seguridad sea mayor o igual a 0.8
If Range("G" & fila).Value >= 0.8 Then
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Distancia de ley cumplimentada en MT"
'sino se cumple lo anterior, será menor que 0.8
Else
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Verificar distancia en MT"
End If

Case 3 'entre 33 y 66
'evaluo si la distancia de seguridad sea menor a 0.9
If Range("G" & fila).Value < 0.9 Then
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Verificar distancia en MT"
'sino se cumple lo anterior, será mayor o igual que 0.9
Else
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Distancia de ley cumplimentada en AT"
End If
Case 4 'entre 66 y 500
'evaluo si la distancia de seguridad es mayor o igual a 1.5
If Range("G" & fila).Value >= 1.5 Then
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Distancia de ley cumplimentada en EAT"
'sino se cumple lo anterior, será menor que 1.5
Else
Range("H" & fila).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("H" & fila).Value = "Verificar Distancia en EAT"
End If
End Select
Range("C" & fila + 1).Select
End If
End If
End Sub

Agradecido por la mano auxiliadoraaaaaaaa

1 respuesta

Respuesta
2

Listo, le hice algunos ajustes a tu código:

Private Sub Worksheet_Change(ByVal Target As Range)
'Act.Por.Dante Amor
    Dim fila As Integer
    fila = Target.Row
    'verifico que el cambio sea en la columna C, G o N7
    If Not Intersect(Target, Range("C33:C64, G33:G64, N7")) Is Nothing Then
        'Analiza las opciones de las condiciones
        valor = Range("C" & fila)
        If valor = "" Then                                  'celda vacia
            Call PonColor(fila, xlNone, "")
        ElseIf valor >= 13.2 And valor <= 33 Then                       'entre 13.2 y 33
            If Range("G" & fila).Value >= 0.8 Then                      'si distancia es mayor o igual a 0.8
                Call PonColor(fila, 5296274, "Distancia de ley cumplimentada en MT")
            Else
                Call PonColor(fila, 255, "Verificar distancia en MT")   'si es menor a 0.8
            End If
        ElseIf valor > 33 And valor <= 66 Then                          'entre 33 y 66
            If Range("G" & fila).Value >= 0.9 Then                      'si es mayor o igual a 0.9
                Call PonColor(fila, 5296274, "Distancia de ley cumplimentada en AT")
            Else
                Call PonColor(fila, 255, "Verificar distancia en AT")   'si es menor a 0.9
            End If
        ElseIf valor > 66 And valor <= 500 Then                         'entre 66 y 500
            If Range("G" & fila).Value >= 1.5 Then                      'si es mayor o igual a 1.5
                Call PonColor(fila, 5296274, "Distancia de ley cumplimentada en EAT")
            Else
                Call PonColor(fila, 255, "Verificar distancia en EAT")  'si es menor a 1.5
            End If
        End If
        Range("C" & fila + 1).Select
    End If
End Sub
'
Sub PonColor(fila, wcolor, texto)
'Por.Dante Amor
    With Range("H" & fila).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = wcolor
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("H" & fila).Value = texto
End Sub

Prueba y me comentas.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

¡Gracias! Dante sos un GENIOOOO anda muy bien el asunto ahora es como hago para que cuando yo ponga el valor de la tension de columna C33:C64 me coloque la categoría de la tensión en las columnas D33:D64.

Quiero evitar el uso de formulas en la planilla.

Agradecido por tu Big Respuesta Graciasssssss 

Con mucho gusto te ayudo con todas tus peticiones.

Crea una nueva pregunta en Todoexpertos.com dentro del tema de microsoft excel. En el desarrollo de la pregunta escribe: "para Dante Amor". Ahí me describes con ejemplos lo que necesitas.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas