-1

Я прочитал данные за и против заявлений 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .