나는 진술의 데이터 장단점을 읽었으며 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