Otra pregunta sobre case

En mi pregunta anterior me diste otra excelente respuesta ahora,
mi pregunta es como puedo aplicar este caso a otras celdas en una
misma hoja es decir:
Si M13 es = 3 entonces N13=40 y O14=59.2
*Esta opcion tenia 40 casos
*Este es el caso donde ya me diste una excelente repuesta.
Ahora como puedo aplicar eso a otras celdas dentro de la misma forma imagino
es el mismo procedimiento que ya me diste pero con una sintaxis diferente para que
acepte otras celdas yo creo es algo como esto, obviamente estoy complementado la solución
que tu me diste anteriormente:
Option Explicit
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim Y As Variant
Dim X As Variant
Dim Valor1 As Integer 'Esto lo agrege
Dim Y1 As Variant 'Esto lo agrege
Dim X1 As Variant 'Esto lo agrege
If Target.Address(False, False) = "M13" Then
Valor = Val(Target.Value)
Select Case Valor
Case 3: Y = 219: X = 40
Case 4: Y = 177: X = 38
Case 5: Y = 150: X = 37
Case 6: Y = 133.3: X = 35
Case 7: Y = 121.8: X = 33
Case 8: Y = 111.5: X = 32
End Select
Range("N13").Value = Y
Range("O13").Value = X
'todo lo que sigue lo agrege
If Target.Address(False, False) = "M14" Then
Valor1 = Val(Target.Value)
Select Case Valor1
Case 3: Y1 = 219: X1 = 40
Case 4: Y1 = 177: X1 = 38
Case 5: Y1 = 150: X1 = 37
Case 6: Y1 = 133.3: X1 = 35
Case 7: Y1 = 121.8: X1 = 33
Case 8: Y1 = 111.5: X1 = 32
Case 9: Y1 = 105: X1 = 30
End Select
Range("N14").Value = Y1
Range("O14").Value = X1
End If
End If
End Sub
Esto ya lo probé pero obviamente no hace nada ni siquiera me manda un error
Gracias!

1 Respuesta

Respuesta
1
Ten cuidado con el evento Change, no abuses de el, pues recuerda que cada vez que cambies un valor en cualquier de las 16,777,216 de celdas que tiene cada hoja, este evento se ejecuta, si bien, la validación de la celda que se modifica es buena, como te dije en el mensaje anterior no es muy bueno hacer asignación de valores en este evento, pero para resolver lo que quieres, no te hace nada por lo siguiente
If Celda=M13 Then
If Celda=M14 Then
End If
End If
Tu tienes esto, pero observa, si la celda modifica es M13, gace algo, pero dentro valida que sea la celda M14 lo cual es incongruente si "afuera" verificaste que sea la M13, o sea aquí "entra" cuando es M13 entonces no puedes ser M14, para evaluar otras celdas puede ser así...
Dim strCelda As String
strCelda = Target.Address(False, False)
If strCelda="M13" Then
'Aqui va tu codigo
ElseIf strCelda="M14" Then
'Aqui va le codigo si la celda modificada es M14
ElseIf strCelda="M15" Then
'Y asi con todas las celdas que quieras
End If
Una variantes podria ser:
If strCelda="M13" Then
'Aqui va tu codigo para M13
End If
If strCelda="M14" Then
'Aqui va tu codigo para M14
End If
If strCelda="M15" Then
'Aqui va tu codigo para M15
End If
Como veras la unica diferencia es que en el primer caso, los If...ElseIf...End If son una misma estructura y en el segundo caso, son If...End If independientes, pero las dos funcionan, incluso podrias usar el mismo Select Case
Dim strCelda As String
strCelda = Target.Address(False, False)
Select Case strCelda
Case "M13"
'Codigo para M13
Case "M14"
'Codigo para M14
Case "M15"
'Codigo para M15
End Select
¿Muy fácil, verdad?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas