Como armo un código vsb para que al poner un valor en un rango de columnas me tire un estado con descripción en otra columna...
Estimado Dante buenos días, este es el código fuente de mi macro,
Private Sub Worksheet_Change(ByVal Target As Range)
Chau_Eventos
Dim col As Integer
Dim i As Integer
Dim caso As Integer
For i = 33 To 64
'Analiza las opciones de las condiciones y les atribuye un numero de caso
If Range("C" & i).Value = "" Then
caso = 1
Else
If Range("C" & i).Value >= 13.2 And Range("C" & i).Value <= 33 Then
caso = 2
Else
If Range("C" & i).Value > 33 And Range("C" & i).Value <= 66 Then
caso = 3
Else
If Range("C" & i).Value > 66 And Range("C" & i).Value <= 500 Then
caso = 4
End If
End If
End If
End If
Select Case caso
Case 1 'celda vacia
Range("H" & i).Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = ""
'Hola_Eventos
Case 2 'entre 13.2 y 33
'evaluo si la distancia de seguridad sea mayor o igual a 0.8
If Range("G" & i).Value >= 0.8 Then
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Distancia de ley cumplimentada en MT"
'Hola_Eventos
'sino se cumple lo anterior, será menor que 0.8
Else
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Verificar distancia en MT"
'Hola_Eventos
End If
Case 3 'entre 33 y 66
'evaluo si la distancia de seguridad sea menor a 0.9
If Range("G" & i).Value < 0.9 Then
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Verificar distancia en MT"
'Hola_Eventos
'sino se cumple lo anterior, será mayor o igual que 0.9
Else
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Distancia de ley cumplimentada en AT"
'Hola_Eventos
End If
Case 4 'entre 66 y 500
'evaluo si la distancia de seguridad es mayor o igual a 1.5
If Range("G" & i).Value >= 1.5 Then
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Distancia de ley cumplimentada en EAT"
'Hola_Eventos
'sino se cumple lo anterior, será menor que 1.5
Else
Range("H" & i).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Chau_Eventos
Range("H" & i).Value = "Verificar Distancia en EAT"
'Hola_Eventos
End If
End Select
Next
Range(Target.Address).Select
col = Target.Column
Cells(ActiveCell.Row + 1, col).Select
Hola_Eventos
End Sub
Sub Chau_Eventos()
Application.EnableEvents = False
End Sub
Sub Hola_Eventos()
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change1(ByVal Target As Range)
Chau_Eventos
Dim col As Integer
Dim i As Integer
Dim caso As Integer
For i = 33 To 64
'Analiza las opciones de las condiciones y les atribuye un numero de caso
If Range("C" & i).Value = "" Then
caso = 1
Else
If Range("C" & i).Value >= 13.2 And Range("C" & i).Value <= 33 Then
Else
If Range("C" & i).Value > 33 And Range("C" & i).Value <= 66 Then
caso = 3
Else
If Range("C" & i).Value > 66 And Range("C" & i).Value <= 500 Then
caso = 4
End If
End If
End If
End If
Select Case caso
Range("D" & i).Select
Case 1 'celda vacia
Range("D" & i).Value = ""
'Hola_Eventos
Case 2 'entre 13.2 y 33
'evaluo la categoría de la linea
Range("D" & i).Value = "Linea de MT"
'Hola_Eventos
Case 3 'entre 33 y 66
'evaluó categoría de la línea
Range("D" & i).Value = " Linea de AT "
'Hola_Eventos
Case 4 'entre 66 y 500
'evaluó categoría de la línea
Range("D" & i).Value = " Linea de EAT "
'Hola_Eventos
End Select
End Sub
Lo que quiero es que al poner un valor de tensión en cualquiera de las celdas de la columna C33:64 me arroje una categoría asignada en la celda contigua de la columna D33:D64:
Ejemplo, si pongo un valor de 13,2 o de 33 en la celda C33 en la misma fila D33 debe decir "Linea de MT", si pongo 66, 132 o 500 en C33 en la misma fila D33 debe indicar "Linea de AT"
Esto debe siempre ocurrir contemplando que la macro se autoejecute solo cuando cambia de valor alguna de las celdas de la columna C33:C64
Disculpa mi ignorancia pero estoy iniciando en esto de la programación prácticamente me he olvidado mucho de todo...
Agradecido por la ayuda.
Saludos;
Creo que falta el procedimiento Sub PonColor() - Adriel Ortiz Mangia
El tema está interesante ! y para valorar se agotó - Adriel Ortiz Mangia
gracias, ya lo puse. - Dante Amor