Excel VBA コード、ON 変数 GOTO の代替

Excel VBA コード、ON 変数 GOTO の代替

私はステートメントの長所と短所のデータを読み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

関連情報