Ich habe die Vor- und Nachteile von ON X GOTO
Anweisungen gelesen und bin mir der Alternativen zu Calls und Jmp sowie der Tatsache bewusst, dass dies als schlechte Praxis gilt, hätte aber gerne eine einfache alternative Lösung für deren Verwendung. Ebenso (nicht nur aus Faulheit) scheint die Verwendung umfangreicher Codezeilen für jede Alternative ineffizient und nicht so leicht zu lesen.
Im Wesentlichen hätte ich gerne eine einfache Alternative zu Folgendem (in englischem Code geschrieben, nicht in einem bestimmten Code, aber in VBA erforderlich):
Input x
On x Goto LineA, LineB, LineC
LineA....
End
LineB....
End
LineC....
End
oder:
List of alternatives (choice = 1, choice = 2, choice = 3)
Input choice
on choice someVariable = string1, string2, string3
(Remaining code which uses that string)
Beide sind sehr ähnlich, wobei zu berücksichtigen ist, dass die Liste beliebig lang sein kann und die Zeichenfolgen länger sein können, jedoch durch eine einzelne Anweisung ausgewählt werden können, anstatt in jedem Einzelfall zu neuen Codezeilen zu springen.
Antwort1
Ignorieren Sie bewährte Methoden und Ratschläge nicht. Dieser Code ist perfekt lesbar und tut, was Sie brauchen, ohne Regeln zu verletzen ...
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