Eu li os prós e contras das ON X GOTO
declarações e estou bem ciente das alternativas Calls e Jmp e do fato de que são consideradas uma má prática, mas gostaria de uma solução alternativa simples para seu uso. Da mesma forma (não apenas por ser preguiçoso), mas o uso de extensas linhas de código para cada alternativa parece ineficiente e não tão fácil de ler.
Em essência, eu gostaria de uma alternativa simples ao seguinte (escrito em código em inglês, em vez de qualquer código específico, mas necessário no VBA):
Input x
On x Goto LineA, LineB, LineC
LineA....
End
LineB....
End
LineC....
End
ou:
List of alternatives (choice = 1, choice = 2, choice = 3)
Input choice
on choice someVariable = string1, string2, string3
(Remaining code which uses that string)
Ambos são muito semelhantes, tendo em mente que a lista pode ter qualquer tamanho e as strings podem ser mais longas, mas selecionadas por uma única instrução, em vez de pular para novas linhas de código em cada caso específico.
Responder1
Não ignore as melhores práticas e conselhos. Este código é perfeitamente legível e faz o que você precisa sem quebrar regras...
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