Como unir dos select case

En mi ultima pregunta me diste esta excelente respuesta ahora mi pregunta es como uno esto dos casos en una misma hoja de excel.
Al ponerlos tal cual como esta en vb me da un error de uno rutina ambigua o algo así.
Gracias
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim Y As Variant
If Target.Address(False, False) = "M13" Then
Valor = Val(Target.Value)
Select Case Valor
Case 3: Y = 219
Case 4: Y = 177
Case 5: Y = 150
Case 6: Y = 133.3
Case 7: Y = 121.8
Case 8: Y = 111.5
Case 9: Y = 105
Case 10: Y = 99.5
Case 11: Y = 94.3
Case 12: Y = 90.5
Case 13: Y = 87.8
Case 14: Y = 84.5
Case 15: Y = 82
Case 16: Y = 80
Case 17: Y = 78
Case 18: Y = 76.5
Case 19: Y = 75
Case 20: Y = 73.3
Case 21: Y = 72
Case 22: Y = 71.3
Case 23: Y = 70
Case 24: Y = 69.3
Case 25: Y = 67.9
Case 26: Y = 66.5
Case 27: Y = 65
Case 28: Y = 64
Case 29: Y = 62.8
Case 30: Y = 61.7
Case 31: Y = 60.7
Case 32: Y = 59.8
Case 33: Y = 59
Case 34: Y = 58.4
Case 35: Y = 57.7
Case 36: Y = 56.9
Case 37: Y = "No valido"
End Select
Range("N13").Value = Y
End If
End Sub
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim Y As Variant
If Target.Address(False, False) = "M13" Then
Valor = Val(Target.Value)
Select Case Valor
Case 3: Y = 40
Case 4: Y = 38
Case 5: Y = 37
Case 6: Y = 35
Case 7: Y = 33
Case 8: Y = 32
Case 9: Y = 30
Case 10: Y = 28
Case 11: Y = 27
Case 12: Y = 25
Case 13: Y = 23
Case 14: Y = 22
Case 15: Y = 20
Case 16: Y = 18
Case 17: Y = 17
Case 18: Y = 15
Case 19: Y = 13
Case 20: Y = 12
Case 21: Y = 10
Case 22: Y = 8
Case 23: Y = 7
Case 24: Y = 5
Case 25: Y = 5
Case 26: Y = 5
Case 27: Y = 5
Case 28: Y = 5
Case 29: Y = 5
Case 30: Y = 5
Case 31: Y = 5
Case 32: Y = 5
Case 33: Y = 5
Case 34: Y = 5
Case 35: Y = 5
Case 36: Y = 5
Case 37: Y = "No valido"
End Select
Range("O13").Value = Y
End If
End Sub

1 respuesta

Respuesta
1
Cuando te de un error, procura anotarlo y transcribirlo tal cual, los mensajes de error, NO son algo así, son mensajes que ayudan a encontrar y corregir los errores, el problema "supongo", es que no puedes tener dos veces el mismo evento
'** Esto es incorrecto **
Private Sub Worksheet_change(ByVal Target As Range)
End Sub
Private Sub Worksheet_change(ByVal Target As Range)
End Sub
Otro comentario es que veo que al final haces una asignacion como esta
Range("N13").Value = Y
NO es recomendable hacer asignaciones dentro del evento Change, pues esta linea vuelve a desencadenar el evento Change...
Si quieres unir las rutinas, tienes que determinar que valores toma tu variable Y, esto es por que en la primer rutina, tienes...
Case 3: Y = 219
y en la segunda tienes
Case 3: Y = 40
En el caso de que sea 3, o toma un valor o toma el otro o declara dos variables o decide, así con muchos otros valores repetidos...
¿Cómo habrás notado no soy un conocedor de VB y tienes razón sobre el error perdona, ahora ya cambie la variable pero no se como cambiar el Segundo (Private Sub Worksheet_change(ByVal Target As Range) aquí que debo anotar o como le debo cambiar? Que quito o pongo para que no marque el error, GRACIAS y Disculpa el que no te haya aclarado el error.
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim Y As Variant
If Target.Address(False, False) = "M13" Then
Valor = Val(Target.Value)
Select Case Valor
Case 3: Y = 219
Case 4: Y = 177
Case 5: Y = 150
Case 6: Y = 133.3
Case 7: Y = 121.8
Case 8: Y = 111.5
Case 9: Y = 105
Case 10: Y = 99.5
Case 11: Y = 94.3
Case 12: Y = 90.5
Case 13: Y = 87.8
Case 14: Y = 84.5
Case 15: Y = 82
Case 16: Y = 80
Case 17: Y = 78
Case 18: Y = 76.5
Case 19: Y = 75
Case 20: Y = 73.3
Case 21: Y = 72
Case 22: Y = 71.3
Case 23: Y = 70
Case 24: Y = 69.3
Case 25: Y = 67.9
Case 26: Y = 66.5
Case 27: Y = 65
Case 28: Y = 64
Case 29: Y = 62.8
Case 30: Y = 61.7
Case 31: Y = 60.7
Case 32: Y = 59.8
Case 33: Y = 59
Case 34: Y = 58.4
Case 35: Y = 57.7
Case 36: Y = 56.9
Case 37: Y = "No valido"
End Select
Range("N13").Value = Y
End If
End Sub
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim X As Variant
If Target.Address(False, False) = "M13" Then
Valor = Val(Target.Value)
Select Case Valor
Case 3: X = 40
Case 4: X = 38
Case 5: X = 37
Case 6: X = 35
Case 7: X = 33
Case 8: X = 32
Case 9: X = 30
Case 10: X = 28
Case 11: X = 27
Case 12: X = 25
Case 13: X = 23
Case 14: X = 22
Case 15: X = 20
Case 16: X = 18
Case 17: X = 17
Case 18: X = 15
Case 19: X = 13
Case 20: X = 12
Case 21: X = 10
Case 22: X = 8
Case 23: X = 7
Case 24: X = 5
Case 25: X = 5
Case 26: X = 5
Case 27: X = 5
Case 28: X = 5
Case 29: X = 5
Case 30: X = 5
Case 31: X = 5
Case 32: X = 5
Case 33: X = 5
Case 34: X = 5
Case 35: X = 5
Case 36: X = 5
Case 37: X = "No valido"
End Select
Range("O13").Value = X
End If
End Sub
Solo junta los datos para Y y para X...
Option Explicit
Private Sub Worksheet_change(ByVal Target As Range)
Dim Valor As Integer
Dim Y As Variant
Dim X As Variant
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
'Aqui tienes que agregar todos los demas pares de datos
Case 37: Y = "No valido"
End Select
Range("N13").Value = Y
Range("O13").Value = X
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas