VBA 논리 Operators: Excel VBA의 AND, OR, NOT, IF NOT
⚡ 스마트 요약
VBA 논리 Opera연산자는 여러 조건을 조합하여 참 또는 거짓이라는 단일 결과를 생성합니다. 이 페이지에서는 실행 가능한 명령 버튼 예제, 전체 진리표, 그리고 비교적 덜 알려진 Xor, Eqv, Imp 연산자와 함께 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 버튼을 추가합니다.
아래 이미지와 같이 속성을 설정합니다.

다음 표에서는 변경해야 할 속성과 업데이트해야 할 값을 보여줍니다.
| 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는 주로 오래된 코드나 논리 연습 문제에서 나오므로, 직접 작성하는 것보다 알아두는 것이 더 중요합니다.
