Код Excel VBA, Альтернативы GOTO для переменной ON

Код Excel VBA, Альтернативы GOTO для переменной ON

Я прочитал данные за и против ON X GOTOутверждений и хорошо знаю об альтернативах Calls и Jmp и о том, что это считается плохой практикой, но хотел бы простое альтернативное решение для его использования. В равной степени (не просто из-за лени), но использование обширных строк кода для каждой альтернативы кажется неэффективным и не таким простым для чтения.

По сути, мне нужна простая альтернатива следующему (написанному на английском языке, а не на каком-то конкретном коде, но необходимому на VBA):

Input x

On x Goto LineA, LineB, LineC

LineA....
End

LineB....
End

LineC....
End

или:

List of alternatives (choice = 1, choice = 2, choice = 3)

Input choice

on choice someVariable = string1, string2, string3

(Remaining code which uses that string)

Оба варианта очень похожи, если учесть, что список может быть любой длины, а строки могут быть длиннее, но выбираются одним оператором, а не переходят на новые строки кода в каждом конкретном случае.

решение1

Не игнорируйте лучшие практики и советы. Этот код прекрасно читается и делает то, что вам нужно, не нарушая правил...

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

Связанный контент