VBA에 3개의 연산자가 있습니까?
저는 C 프로그래밍 언어에 기반을 둔 아름다운 오브제 C의 세계에서 왔고, 공간을 절약하는 기발한 방법을 찾는 것에 푹 빠졌습니다.그러나 가능한 한 많은 문서를 살펴보았지만 VBA에서 이 구문을 단축할 만한 유용한 내용은 찾을 수 없습니다.
If boolVar = True Then
'Do something
Else
'Do nothing
End If
Obj C에서, 그리고 자연스럽게 C에서, 저는 이것을 하는 것에 매우 익숙합니다.
boolVar ? "Nope, tis false" : "Yup, tis true"
이것은 대부분의 다른 언어들이 사용하는 것과 매우 유사하며, 몇몇은 추가적인 논리 연산자를 사용할 수 있습니다.!=
또는==
하지만 그것은 저를 낙관적으로 만듭니다.제가 제대로 찾아보지 못했을 수도 있는데, 그렇다면 어디서 서류를 받으셨는지 알려주시기 바랍니다.
TLDR, VBA에서 If/Then/Else를 한 줄의 코드로 단축할 수 있습니까?이것은 'Do Something'이 다른 변수의 단일 매개 변수를 설정하거나 버튼을 활성화/비활성화하는 것에 지나지 않을 때 매우 유용합니다.
Sub test()
Dim x As Long
Dim y As Long
y = 1
x = IIf(y = 1, 1, 2)
End Sub
가장 가까운 기능은IIf()
IIf(expr, truepart, falsepart)
그러나:
어떤 변수에 반환 값을 할당해야 하는 동안 분기가 단순히 코드를 실행하도록 할 수는 없습니다.
합선이 되지 않습니다
항상 두 분기를 모두 평가하여 둘 중 하나가 "실제" 분기가 아니더라도 오류가 발생할 수 있습니다.
그래서 가장 유사한 진술은 다음과 같습니다.
If boolVar Then sub1 Else sub2
위치:
boolVar
부울 형식 변수입니다.sub1
그리고.sub2
두 개의 서로 다른 하위/하위 항목을 호출합니다.
또는 모듈에 다음과 같은 공용 기능을 만들 수 있습니다.
Public Function iff(expr, trueR, falseR) As Variant
If expr Then iff = trueR Else iff = falseR
End Function
아직까지는 제게 효과가 있습니다.
언급URL : https://stackoverflow.com/questions/41596121/does-vba-have-a-ternary-operator
'sourcecode' 카테고리의 다른 글
문서에 대해 검색된 문법 제약 조건(DTD 또는 XML 스키마)이 없습니다. (0) | 2023.04.28 |
---|---|
목표-C 정적 클래스 수준 변수 (0) | 2023.04.28 |
다른 클래스에서 실행 중인 다른 스레드에서 UI를 업데이트하는 방법 (0) | 2023.04.28 |
이클립스와 같은 Android Studio 바로 가기 (0) | 2023.04.28 |
텍스트 블록 WPF에 하이퍼링크 추가 (0) | 2023.04.23 |