Código Excel VBA, ON Variável GOTO Alternativas

Código Excel VBA, ON Variável GOTO Alternativas

Eu li os prós e contras das ON X GOTOdeclaraçõ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

informação relacionada