VBA 논리 Operators: Excel VBA의 AND, OR, NOT, IF NOT

⚡ 스마트 요약

VBA 논리 Opera연산자는 여러 조건을 조합하여 참 또는 거짓이라는 단일 결과를 생성합니다. 이 페이지에서는 실행 가능한 명령 버튼 예제, 전체 진리표, 그리고 비교적 덜 알려진 Xor, Eqv, Imp 연산자와 함께 AND, OR, NOT 연산자에 대해 설명합니다.

  • 🔗 목적 : 논리 연산자는 하나의 if 문 안에서 둘 이상의 조건을 평가할 수 있습니다.
  • ✅ 및 Opera토르: 결합된 모든 조건이 참일 때만 참을 반환합니다.
  • ➕ OR Opera토르: 조건 중 하나라도 참이면 True를 반환합니다.
  • 🔄 않습니다. Opera토르: 결과를 반전시켜 True를 False로, False를 True로 바꿉니다.
  • 📊 진실 테이블 : 단일 참조 그리드는 모든 입력 조합에 대한 각 연산자의 결과를 보여줍니다.
  • 🧮 여분의 Opera토르: Xor, Eqv 및 Imp는 배타적, 등가적 및 묵시적 조건을 처리합니다.
  • ⚠️ 단락 없음: VBA는 조건의 모든 부분을 평가하므로, 가드 테스트는 중첩된 if 문 안에 있어야 합니다.

VBA 논리 Operators: Excel VBA에서 AND, OR, NOT 연산자 사용

Excel VBA 논리 Opera토르

고객 주문을 처리하고 싶다고 가정해 보겠습니다. 그러기 위해서는 먼저 주문한 제품이 있는지 확인해야 합니다. 제품이 있다면 재고 수량이 충분한지도 확인해야 합니다. 이런 경우 논리 연산자가 유용합니다. 논리 연산자는 두 개 이상의 조건을 평가하는 데 사용됩니다.

각각의 조건은 그 자체로 다음과 같은 요소로 구성됩니다. 비교 연산자 그리고 참 또는 거짓을 반환합니다. 그런 다음 논리 연산자가 이러한 결과를 결합하여 최종 답을 생성합니다.

주요 Excel VBA 논리 연산자 AND, OR, NOT은 아래 표에 나와 있습니다.

S / N Opera바위 산 기술설명 예시 산출
1 및 AND: 둘 이상의 조건을 결합할 때 사용됩니다. 모든 조건이 true이면 AND는 true로 평가됩니다. 조건 중 하나라도 거짓이면 AND는 거짓으로 평가됩니다. 만약 (1 = 1)이고 (0 = 1)이면 그릇된
2 OR OR: 둘 이상의 조건을 결합할 때 사용됩니다. 조건 중 하나라도 true로 평가되면 OR은 true를 반환합니다. 모두 false인 경우 OR은 false를 반환합니다. 만약 (1 = 1)이거나 (5 = 0)이면 참된
3 않습니다. NOT: 이것은 역함수처럼 작동합니다. 조건이 true이면 false를 반환하고, 조건이 false이면 true를 반환합니다. 만약 0이 아니라면 (0 = 0) 그릇된

위의 세 가지 설명은 입력과 결과의 단일 표로 기억하기가 더 쉽습니다.

VBA 논리 연산자의 진리표 Opera토르

진리표는 모든 입력 조합과 각 연산자가 반환하는 결과를 나열합니다. 진리표를 한 번만 읽어두면 이후에 작성하는 모든 조건식에서 추측에 의존할 필요가 없습니다.

조건 A 조건 B A와 B A 또는 B A 아님
참된 참된 참된 참된 거짓
참된 거짓 거짓 참된 거짓
거짓 참된 거짓 참된 참된
거짓 거짓 거짓 거짓 참된

두 가지 패턴은 기억해 두면 좋습니다. 및 네 줄 중 한 줄에서만 True를 반환하므로 선택 범위를 좁힐 수 있습니다. OR 한 행에서만 False를 반환하므로 해당 행의 범위를 넓힙니다. 않습니다. 두 가지 조건이 아닌 한 가지 조건만 사용하기 때문에 별도의 열로 표시됩니다.

VBA 논리 Operators 예시 소스 Code

단순화를 위해, 우리는 하드코딩된 숫자를 비교할 것입니다.

“삽입 옵션”에서 시트에 ActiveX 버튼을 추가합니다.

아래 이미지와 같이 속성을 설정합니다.

VBA 논리 Opera토르
VBA 논리 Opera토르

다음 표에서는 변경해야 할 속성과 업데이트해야 할 값을 보여줍니다.

S / N Control: 부동산 가치관
1 커맨드 버튼1 이름 btnAND
표제 및 Operator (1 = 1) 및 (0 = 0)
2 커맨드 버튼2 이름 btnOR
표제 OR Opera토르(1 = 1) 또는 (5 = 0)
3 커맨드 버튼3 이름 btnNOT
표제 않습니다. Operator Not (0 = 0)

btnAND_Click에 다음 코드를 추가합니다.

Private Sub btnAND_Click()
If (1 = 1) And (0 = 0) Then
    MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator"
Else
    MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator"
End If
End Sub

VBA 만약 AND Opera바위 산

  • “만약 (1 = 1) 그리고 (0 = 0) 그러면” if 문은 AND 논리 연산자를 사용하여 두 조건을 결합합니다(1 = 1) And(0 = 0). 두 조건이 모두 참이면 위의 'Else' 키워드 코드가 실행됩니다. 두 조건이 모두 참이 아니면 아래의 'Else' 키워드 코드가 실행됩니다.

두 조건이 모두 충족되므로 버튼을 클릭하면 "AND 평가 결과가 TRUE"가 표시됩니다.

btnOR_Click에 다음 코드를 추가하세요.

Private Sub btnOR_Click()
If (1 = 1) Or (5 = 0) Then
    MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator"
Else
    MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator"
End If
End Sub

VBA 경우 OR Opera바위 산

  • “만약 (1 = 1) 또는 (5 = 0) 그러면” if 문은 OR 논리 연산자를 사용하여 두 조건을 결합합니다(1 = 1, 또는 5 = 0). 두 조건 중 하나라도 참이면 Else 키워드 위의 코드가 실행됩니다. 두 조건 모두 거짓이면 Else 키워드 아래의 코드가 실행됩니다.

첫 번째 조건은 참이고 두 번째 조건은 거짓이므로 OR 연산은 여전히 ​​참을 반환하고 메시지에는 "OR 연산 결과가 참입니다"라고 표시됩니다.

btnNOT_Click에 다음 코드를 추가합니다.

Private Sub btnNOT_Click()
If Not (0 = 0) Then
    MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator"
Else
    MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator"
End If
End Sub

VBA가 아닌 경우 Opera바위 산

  • “그렇지 않다면 (0 = 0) 그럼” VBA의 `If Not` 함수는 논리 연산자 `NOT`을 사용하여 `if` 문 조건의 결과를 반전시킵니다. 내부 조건(0 = 0)이 참이므로 `NOT` 함수는 이를 거짓으로 만들고 `Else` 키워드 아래의 코드가 실행됩니다. 만약 내부 조건이 거짓이었다면 `NOT` 함수는 이를 참으로 만들고 `Else` 키워드 위의 코드가 실행되었을 것입니다.

이 세 개의 버튼은 각각 고정된 값을 테스트합니다. 실제 조건은 워크시트에서 읽어오며 두 가지 유형의 연산자를 모두 혼합합니다.

논리와 비교를 결합하는 방법 Opera토르

실제 운영 환경에서 사용되는 매크로는 하드코딩된 숫자를 직접 테스트하는 경우는 드뭅니다. 매크로는 값을 읽어 비교하고, 여러 비교 결과를 종합하여 최종 결정을 내립니다. 아래 매크로는 제품이 존재하고, 수량이 충분하며, 고객 계정이 보류 상태가 아닌 경우에만 주문을 승인합니다.

Sub ApproveOrder()
    Dim QtyOnHand As Long
    Dim QtyOrdered As Long
    Dim OnHold As Boolean

    QtyOnHand = Sheet1.Range("B2").Value
    QtyOrdered = Sheet1.Range("B3").Value
    OnHold = Sheet1.Range("B4").Value

    ' All three parts must hold for the order to pass
    If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then
        Sheet1.Range("B5").Value = "Approved"
    Else
        Sheet1.Range("B5").Value = "On hold"
    End If
End Sub

결합된 조건을 읽기 쉽고 정확하게 유지하려면 세 가지 규칙을 준수해야 합니다.

  • 모든 비교를 괄호로 표시하세요: VBA는 비교 연산자를 논리 연산자보다 먼저 평가하지만, 대괄호는 그룹을 만듭니다.ping 명백하며, 나중에 문제가 커질 때 발생할 수 있는 실수를 방지합니다.
  • And와 Or의 우선순위에 유의하세요. A 또는 B 그리고 C 로 읽습니다 A 또는 (B와 C)만약 당신이 ~을 의미했다면 (A 또는 B) 그리고 C괄호는 필수입니다.
  • 불리언 값에는 적용 안 함(Not)을, 숫자에는 적용 안 함: 보류 중이 아님 자연스럽게 읽힙니다. 피하세요. 5 참고Not 연산자는 숫자에 대해 비트 연산을 수행하고 False가 아닌 -6을 반환하기 때문입니다.

⚠️ 경고: VBA는 단락되지 않습니다. ws가 Nothing이거나 ws.Name이 "Data"인 경우첫 번째 조건이 참일 때도 두 번째 조건이 계속 실행되어 런타임 오류 91이 발생합니다. 이러한 조건문을 중첩된 if 문으로 분리하십시오.

Xor, Eqv 및 Imp OperaVBA의 tors

AND, OR, NOT 연산자는 거의 모든 일상적인 조건을 다루지만, VBA는 if 문을 여러 개 사용하는 것보다 훨씬 명확하게 규칙을 표현할 수 있는 세 가지 논리 연산자를 추가로 제공합니다.

Opera바위 산 True를 반환합니다. 예시 산출
소르 두 조건 중 정확히 하나만 참이며, 둘 다 참일 수는 없습니다. (1 = 1) Xor (5 = 0) 참된
Eqv 두 조건 모두 동일한 값을 가지며, 둘 다 참이거나 둘 다 거짓입니다. (1 = 1) 방정식 (2 = 2) 참된
임프 첫 번째 조건이 두 번째 조건을 함축합니다. 참/거짓 조건만 거짓입니다. (1 = 1) 임프 (5 = 0) 거짓

Xor는 세 가지 중 가장 실용적인 연산자입니다. "할인은 직원이나 로열티 회원에게만 적용되고, 둘 다 해당하는 사람에게는 적용되지 않는다"와 같은 규칙에 적합합니다. Eqv와 Imp는 주로 오래된 코드나 논리 연습 문제에서 나오므로, 직접 작성하는 것보다 알아두는 것이 더 중요합니다.

위 코드가 포함된 Excel을 다운로드하세요.

자주 묻는 질문

실질적인 제한은 없지만, 세 네 개를 넘어서면 가독성이 급격히 떨어집니다. 긴 조건문은 설명적인 이름을 가진 부울 변수로 옮긴 다음, if 문에서 해당 변수를 검사하는 것이 좋습니다.

숫자에 적용할 경우, Not 연산자는 논리적 반전이 아닌 비트 단위 반전을 수행합니다. 따라서 Not(수량 > 0)과 같이 비교 또는 부울 변수에만 적용해야 하며, 결과는 참 또는 거짓이 됩니다.

논리는 같지만 구문이 다릅니다. 워크시트 수식에서는 AND(A1>0, B1>0)처럼 함수로 호출합니다. VBA에서는 조건 사이에 함수를 배치하여 If A1 > 0 And B1 > 0 Then과 같이 사용합니다.

네. 조건을 붙여넣으면 AI 도우미가 더 명확한 괄호를 사용하거나 이름이 지정된 부울 변수로 분할하여 조건을 다시 작성합니다. 잘못된 단순화는 동작에 영향을 미치지만, 새로 작성된 조건을 진리표와 비교하여 검증해야 합니다.

네. 표현식을 입력하면 AI 도우미가 모든 입력 조합과 그 결과를 나열해 주므로, 도달할 수 없는 분기나 잘못된 위치에 있는 괄호를 빠르게 찾아낼 수 있습니다.

이 게시물을 요약하면 다음과 같습니다.