He leído los pros y los contras de ON X GOTO
las declaraciones y soy muy consciente de las alternativas de Calls y Jmp y del hecho de que se considera una mala práctica, pero me gustaría una solución alternativa simple a su uso. De la misma manera (no solo por pereza), el uso de líneas extensas de código para cada alternativa parece ineficiente y no tan fácil de leer.
En esencia, me gustaría una alternativa simple a la siguiente (escrita en código en inglés en lugar de cualquier código específico pero necesario en VBA):
Input x
On x Goto LineA, LineB, LineC
LineA....
End
LineB....
End
LineC....
End
o:
List of alternatives (choice = 1, choice = 2, choice = 3)
Input choice
on choice someVariable = string1, string2, string3
(Remaining code which uses that string)
Ambos son muy similares, teniendo en cuenta que la lista puede tener cualquier longitud y las cadenas pueden ser más largas, pero seleccionadas mediante una sola declaración en lugar de saltar a nuevas líneas de código en cada caso específico.
Respuesta1
No ignore las mejores prácticas y los consejos. Este código es perfectamente legible y hace lo que necesitas sin romper las reglas...
Sub test()
Select Case InputBox("Enter a value")
Case "1"
'Do things that are specific to "1"
Beep
'Or better still, call a specific sub
DoSomething1
Case "2"
'Do things that are specific to "2"
Beep
'Or better still, call a specific sub
DoSomething2
Case "3"
'Do things that are specific to "3"
Beep
'Or better still, call a specific sub
DoSomething3
Case Else
'Do Nothing
End Select
End Sub
Sub DoSomething1()
Beep
End Sub
Sub DoSomething2()
Beep
Beep
End Sub
Sub DoSomething3()
Beep
Beep
Beep
End Sub