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