VBA/Excel/Access/Word/Language Basics/Logical Operators
Содержание
Logical Expressions
 
Sub Main()
    Dim num1 As Integer
    Dim num2 As Single
    Dim str1 As String
    Dim str2 As String
    Dim obj1 As Object
    Dim obj2 As Object
    Dim result As Boolean
    num1 = 10
    num2 = 10
    str1 = "10"
    str2 = "ABC"
    Set obj1 = Range("A1")
    Set obj2 = Range("A1")
    
    result = (num1 = num2)      "result holds True
    result = (num1 < num2)      "result holds False
    result = (num1 > num2)      "result holds False
    result = (num1 >= num2)     "result holds True
    result = (num1 <= num2)     "result holds True
    result = (num1 <> num2)     "result holds False
    
    result = (num1 = str1)      "result holds True
"    result = (num1 = str2)      "Type mismatch error
    
    result = (str1 = str2)       "result holds False
    result = (str1 > str2)       "result holds False
    result = (str1 < str2)       "result holds True
    result = ("a" < "A")         "result holds False
    result = (str1 >= str2)     "result holds False
    result = (str1 <= str2)     "result holds True
    result = (str1 <> str2)     "result holds True
    
    
    result = (obj1 Is obj2)      "result holds False
             Set obj1 = obj2
    result = (obj1 Is obj2)      "result holds True
End Sub
   
Logical operators in VBA
 
Operator       Description 
AND            All conditions must be true before an action can be taken.
OR             At least one of the conditions must be true before an action can be taken.
NOT            If a condition is true, NOT makes it false. If a condition is false, NOT makes it true.
   
Truth table for the AND operator
 
Condition1     Condition2     Condition1 AND Condition2
True           True           True
True           False          False
False          True           False
False          False          False
   
Truth table for the NOT operator
 
Condition1     NOT Condition1
True           False
False          True
   
Truth table for the OR operator
 
Condition1     Condition2     Condition1 OR Condition2
True           True           True
True           False          True
False          True           True
False          False          False
   
Use Boolean value in an If statement
 
Sub Use()
    Dim userName As String
    Dim userBirthday As Date
    Dim nameOk As Boolean
    nameOk = True
    Do
        userName = InputBox("What is your first and last name?", "Name")
        If (userName <> "") Then nameOk = ValidateName(userName)
    Loop While (nameOk = False) Or (userName <> "")
End Sub
Function ValidateName(userName As String) As Boolean
    Dim strLength As Integer
    Dim I As Integer
    Dim numSpaces As Integer
    Dim tempString As String
    Dim msb As Integer
    userName = Trim(userName)
    strLength = Len(userName)
    For I = 1 To strLength
        If Left(userName, 1) = " " Then
            numSpaces = numSpaces + 1
        End If
        userName = Right(userName, Len(userName) - 1)
    Next I
    If (numSpaces <> 1) Then
        ValidateName = False
        msb = MsgBox("Please enter just two names separated by one space", vbCritical, "Error")
    Else
        ValidateName = True
  End If
End Function