 Introduction to Conditions

 Introduction to Boolean Values

 Introduction

A value is referred to as Boolean if it can be either true or false. As you may imagine, the essence of a Boolean value is to check that a condition is true or false, valid or invalid.

 The Boolean Data Type

Like a number or a string, a Boolean value can be stored in a variable. To declare such a variable, use the Boolean keyword. Here is an example:

```Sub Exercise()
Dim EmployeeIsMarried As Boolean
End Sub```

To actually use a Boolean variable, you can assign a value to it. By default, if you declare a Boolean variable but do not initialized it, it receives a value of False:

```Sub Exercise()
Dim EmployeeIsMarried As Boolean

Range("B2").FormulaR1C1 = "Employee Is Married? " & EmployeeIsMarried
End Sub```

This would produce: To initialize a Boolean variable, assign it a True or a False value. In the Visual Basic language, a Boolean variable can also deal with numeric values. The False value is equivalent to 0. For example, instead of False, you can initialize a Boolean variable with 0. Any other numeric value, whether positive or negative, corresponds to True:

```Sub Exercise()
Dim EmployeeIsMarried As Boolean

EmployeeIsMarried = -792730
Range("B2").FormulaR1C1 = "Employee Is Married? " & EmployeeIsMarried
End Sub```

This would produce: The number can be decimal or hexadecimal:

```Sub Exercise()
Dim EmployeeIsMarried As Boolean

EmployeeIsMarried = &HFA26B5
Range("B2").FormulaR1C1 = "Employee Is Married? " & EmployeeIsMarried
End Sub```
 Boolean Values and Procedures

 Introduction

As done with the other data types that we have used so far, Boolean values can be involved with procedures. This means that a Boolean variable can be passed to a procedure and/or a function can be made to return a Boolean value. Some of the issues involved with procedures require conditional statements that we will study in the next lesson. Still, the basic functionality is possible with what we have learned so far.

 Passing a Boolean Variable as Argument

To pass an argument as a Boolean value, in the parentheses of the procedure, type the name of the argument followed by the As Boolean expression. Here is an example:

```Private Sub CheckingEmployee(ByVal IsFullTime As Boolean)

End Sub```

In the same way, you can pass as many Boolean arguments as you need, and you can combine Boolean and non-Boolean arguments as you judge necessary. Then, in the body of the procedure, use (or do not use) the Boolean argument as you wish.

 Returning a Boolean Value

Just as done for the other data types, you can create a function that returns a Boolean value. When declaring the function, specify its name and the As Boolean expression on the right side of the parentheses. Here is an example:

`Public Function IsDifferent() As Boolean`

Of course, the function can take arguments of any kind you judge necessary:

```Public Function IsDifferent(ByVal Value1 As Integer, _
ByVal Value2 As Integer) As Boolean```

In the body of the function, do whatever you judge necessary. Before exiting the function, you must return a value that evaluates to True or False. We will see an example below.

 Boolean Built-In Functions

 Converting a Value to Boolean

To assist you with validating some values or variables to true or false, the Visual Basic language provides many functions. First, to convert a value to Boolean, you can use the CBool() function. Its syntax is:

`Function CBool(ByVal Expression As Variant) As Boolean`

Like all conversion functions, CBool takes one argument, the expression to be evaluated. It should produce a valid Boolean value. If it does, the function returns True or False.

 Checking Whether a Variable Has Been Initialized

After declaring a variable, memory is reserved for but you should assign value to it before using it. At any time, to check whether a variable has been initialized, you can call the IsEmpty() function. Its syntax is:

`Public Function IsEmpty(ByVal Expression As Variant) As Boolean`

When calling this function, pass the name of a variable to it. If the variable was already initialized, the function would return True. Otherwise, it would return False.

 Checking Whether a Value is Numeric

One of the most valuable operations you will perform on a value consists of finding out whether it is numeric or not. To assist you with this, the Visual Basic language provides a function named IsNumeric. Its syntax is:

`Public Function IsNumeric(ByVal Expression As Variant) As Boolean`

This function takes as argument the value or expression to be evaluated. If the argument holds or can produce a valid integer or a decimal value, the function returns True. Here is an example:

```Sub Exercise()
Dim Value As Variant

Value = 258.08 * 9920.3479

Range("B2").FormulaR1C1 = "Is Numeric? " & IsNumeric(Value)
End Sub```

This would produce: If the argument is holding any other value that cannot be identified as a number, the function produces False. Here is an example:

```Sub Exercise()
Dim Value As Variant

Value = #12/4/1770#

Range("B2").FormulaR1C1 = "Is Numeric? " & IsNumeric(Value)
End Sub```

This would produce: Checking for Valid Date/Time

To find out whether an expression holds a valid date, a valid, or not, you can call the IsDate() function. Its syntax is:

`Public Function IsDate(ByVal Expression As Variant) As Boolean`

This function takes an argument as the expression to be evaluated. If the argument holds a valid date and/or time, the function returns True. Here is an example:

```Sub Exercise()
Dim DateHired As Variant

DateHired = "9/16/2001"
Range("B2").FormulaR1C1 = "Is 9/16/2001 a valid date? " & IsDate(DateHired)
End Sub```

This would produce: If the value of the argument cannot be evaluated to a valid date or time, the function returns False. Here is an example:

```Sub Exercise()
Dim DateHired As Variant

DateHired = "Who Knows?"
Range("B2").FormulaR1C1 = "Is it a valid date? " & IsDate(DateHired)
End Sub```

This would produce: Checking for Nullity

After declaring a variable, you should initialize it with a valid value. Sometimes you will not. In some other cases, you may be using a variable without knowing with certainty whether it is holding a valid value. To assist you with checking whether a variable is currently holding a valid value, you can call the IsNull() function. Its syntax is:

`Public Function IsNull(ByVal Expression As Variant) As Boolean`

When calling this function, pass the name of a variable to it. If the variable is currently holding a valid value, this function would returns True. Otherwise, it would return False.

 Logical Operators

 Introduction

A comparison is an operation used to get the boolean result of two values one checked against the other. Such a comparison is performed between two values of the same type.

 Equality

To compare two variables for equality, use the = operator. Its syntax is:

`Value1 = Value2`

The equality operation is used to find out whether two variables (or one variable and a constant) hold the same value. From our syntax, the value of Value1 would be compared with the value of Value2. If Value1 and Value2 hold the same value, the comparison produces a True result. If they are different, the comparison renders false or 0. Here is an example:

```Sub Exercise()
Dim IsFullTime As Boolean

Range("B2").FormulaR1C1 = "Is Employee Full Time? " & IsFullTime)

IsFullTime = True
Range("B4").FormulaR1C1 = "Is Employee Full Time? " & IsFullTime)
End Sub```

This would produce: Inequality <>

As opposed to checking for equality, you may instead want to know whether two values are different. The operator used to perform this comparison is <> and its formula is:

`Variable1 <> Variable2` If the operands on both sides of the operator are the same, the comparison renders false. If both operands hold different values, then the comparison produces a true result. This also shows that the equality = and the inequality <> operators are opposite.

Here is an example:

```Public Function IsDifferent(ByVal Value1 As Integer, _
ByVal Value2 As Integer) As Boolean
IsDifferent = Value1 <> Value2
End Function

Sub Exercise()
Dim a%, b%
Dim Result As Boolean

a% = 12: b% = 48
Result = IsDifferent(a%, b%)

Range("B2").FormulaR1C1 = "The resulting comparison of 12 <> 48 is " & Result
End Sub```

This would produce: A Lower Value <

To find out whether one value is lower than another, use the < operator. Its syntax is:

`Value1 < Value2`

The value held by Value1 is compared to that of Value2. As it would be done with other operations, the comparison can be made between two variables, as in Variable1 < Variable2. If the value held by Variable1 is lower than that of Variable2, the comparison produces a True. Here is an example:

```Sub Exercise()
Dim PartTimeSalary, ContractorSalary As Double
Dim IsLower As Boolean

PartTimeSalary = 20.15
ContractorSalary = 22.48
IsLower = PartTimeSalary < ContractorSalary

MsgBox ("Part Time Salary:  " & PartTimeSalary & vbCrLf & _
"Contractor Salary: " & ContractorSalary & vbCrLf & _
"Is PartTimeSalary < ContractorSalary? " & IsLower)

PartTimeSalary = 25.55
ContractorSalary = 12.68
IsLower = PartTimeSalary < ContractorSalary

MsgBox ("Part Time Salary:  " & PartTimeSalary & vbCrLf & _
"Contractor Salary: " & ContractorSalary & vbCrLf & _
"Is PartTimeSalary < ContractorSalary? " & IsLower)
End Sub```

This would produce:  Equality and Lower Value <=

The previous two operations can be combined to compare two values. This allows you to know if two values are the same or if the first is less than the second. The operator used is <= and its syntax is:

`Value1 <= Value2`

The <= operation performs a comparison as any of the last two. If both Value1 and VBalue2 hold the same value, result is true or positive. If the left operand, in this case Value1, holds a value lower than the second operand, in this case Value2, the result is still true: Greater Value >

When two values of the same type are distinct, one of them is usually higher than the other. VBasic provides a logical operator that allows you to find out if one of two values is greater than the other. The operator used for this operation uses the > symbol. Its syntax is:

`Value1 > Value2`

Both operands, in this case Value1 and Value2, can be variables or the left operand can be a variable while the right operand is a constant. If the value on the left of the > operator is greater than the value on the right side or a constant, the comparison produces a True value. Otherwise, the comparison renders False or null: Here is an example:

```Sub Exercise()
Dim PartTimeSalary, ContractorSalary As Double
Dim IsLower As Boolean

PartTimeSalary = 20.15
ContractorSalary = 22.48
IsLower = PartTimeSalary > ContractorSalary

MsgBox ("Part Time Salary:  " & PartTimeSalary & vbCrLf & _
"Contractor Salary: " & ContractorSalary & vbCrLf & _
"Is PartTimeSalary > ContractorSalary? " & IsLower)

PartTimeSalary = 25.55
ContractorSalary = 12.68
IsLower = PartTimeSalary > ContractorSalary

MsgBox ("Part Time Salary:  " & PartTimeSalary & vbCrLf & _
"Contractor Salary: " & ContractorSalary & vbCrLf & _
"Is PartTimeSalary > ContractorSalary? " & IsLower)
End Sub```

This would produce:  Greater or Equal Value >=

The greater than or the equality operators can be combined to produce an operator as follows: >=. This is the "greater than or equal to" operator. Its syntax is:

`Value1 >= Value2`

A comparison is performed on both operands: Value1 and Value2. If the value of Value1 and that of Value2 are the same, the comparison produces a True value. If the value of the left operand is greater than that of the right operand, the comparison still produces True. If the value of the left operand is strictly less than the value of the right operand, the comparison produces a False result: Here is a summary table of the logical operators we have studied:

 Operator Meaning Example Opposite = Equality to a = b <> <> Not equal to 12 <> 7 = < Less than 25 < 84 >= <= Less than or equal to Cab <= Tab > > Greater than 248 > 55 <= >= Greater than or equal to Val1 >= Val2 <