Home

Introduction to Conditional Statements

 
 

Checking Whether a Condition is True/False

 
 

Introduction

 

In some programming assignments, you must find out whether a given situation bears a valid value. This is done by checking a condition. To support this, the Visual Basic language provides a series of words that can be combined to perform this checking. Checking a condition usually produces a True or a False result.

Once the condition has been checked, you can use the result (as True or False) to take action. Because there are different ways to check a condition, there are also different types of keywords to check different things. To use them, you must be aware of what each does or cannot do so you would select the right one.

Practical LearningPractical Learning: Introducing Conditional Statements

  1. Start Microsoft Visual Basic and create a Console Application named BCR1
  2. In the Solution Explorer, right-click Module1.vb and click Rename
  3. Type BethesdaCarRental.vb and press Enter
  4. Accept to change the file name and change the document as follows:
     
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim EmployeeName As String
            Dim StrHourlySalary As String, StrWeeklyHours As String
            Dim HourlySalaryFormatter As String
            Dim WeeklyHoursFormatter As String
            Dim Payroll As String
    
            HourlySalaryFormatter = "0.00"
            WeeklyHoursFormatter = "0.00"
    
            EmployeeName = InputBox("Enter Employee Name:",
                                    "Bethesda Car Rental",
                                    "John Doe")
            StrHourlySalary = InputBox("Enter Employee Hourly Salary:",
                                    "Bethesda Car Rental", "0.00")
    
            HourlySalaryFormatter = FormatCurrency(CDbl(StrHourlySalary))
    
            StrWeeklyHours = InputBox("Enter Employee Weekly Hours:",
                                    "Bethesda Car Rental", "0.00")
    
            WeeklyHoursFormatter = FormatNumber(CDbl(StrWeeklyHours))
    
            Payroll = "======================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Employee Payroll =-=-==" & vbCrLf &
                      "-------------------------------------------" & vbCrLf &
                      "Employee Name:" & vbTab & EmployeeName & vbCrLf &
                      "Hourly Salary:" & vbTab &
                      HourlySalaryFormatter & vbCrLf &
                      "Weekly Hours:" & vbTab &
                      WeeklyHoursFormatter & vbCrLf &
                      "======================"
    
            MsgBox(Payroll, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  5. To execute the exercise, press Ctrl + F5
  6. Enter the Employee name as Helene Mukoko, the hourly salary as 22.35, and the weekly hours as 38
     
    Payroll
    Payroll
    Payroll
    Payroll
  7. Close the message box and the DOS window to return to your programming environment

If a Condition is True/False, Then What?

The If...Then statement examines the truthfulness of an expression. Structurally, its formula is:

If ConditionToCheck Then Statement

Therefore, the program examines a condition, in this case ConditionToCheck. This ConditionToCheck can be a simple expression or a combination of expressions. If the ConditionToCheck is true, then the program will execute the Statement.

There are two ways you can use the If...Then statement. If the conditional formula is short enough, you can write it on one line, like this:

If ConditionToCheck Then Statement

Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim IsMarried As Boolean
        Dim TaxRate As Double

        TaxRate = 33.0

        MsgBox("Tax Rate: " & TaxRate & "%")

        IsMarried = True

        If IsMarried = True Then TaxRate = 30.65

        MsgBox("Tax Rate: " & TaxRate & "%")
        Return 0
    End Function

End Module

This would produce:

If Condition If Condition

If there are many statements to execute as a truthful result of the condition, you should write the statements on alternate lines. Of course, you can use this technique even if the condition you are examining is short. In this case, one very important rule to keep is to terminate the conditional statement with End If. The formula used is:

If ConditionToCheck Then
    Statement
End If

Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim IsMarried As Boolean
        Dim TaxRate As Double

        TaxRate = 33.0

        MsgBox("Tax Rate: " & TaxRate & "%")

        IsMarried = True
        If IsMarried = True Then
            TaxRate = 30.65

            MsgBox("Tax Rate: " & TaxRate & "%")
        End If

        Return 0
    End Function

End Module

Practical LearningPractical Learning: Using If...Then

  1. To use an If condition, change the document as follows:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim EmployeeName As String
            Dim StrHourlySalary As String, StrWeeklyHours As String
            Dim HourlySalaryFormatter As String
            Dim WeeklyHoursFormatter As String
            Dim Payroll As String
    
            HourlySalaryFormatter = "0.00"
            WeeklyHoursFormatter = "0.00"
    
            EmployeeName = InputBox("Enter Employee Name:",
                                    "Bethesda Car Rental", "John Doe")
            StrHourlySalary = InputBox("Enter Employee Hourly Salary:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrHourlySalary) = True Then
                HourlySalaryFormatter = FormatCurrency(CDbl(StrHourlySalary))
            End If
    
            StrWeeklyHours = InputBox("Enter Employee Weekly Hours:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrWeeklyHours) = True Then
                WeeklyHoursFormatter = FormatNumber(CDbl(StrWeeklyHours))
            End If
    
            Payroll = "======================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Employee Payroll =-=-==" & vbCrLf &
                      "-------------------------------------------" & vbCrLf &
                      "Employee Name:" & vbTab & EmployeeName & vbCrLf &
                      "Hourly Salary:" & vbTab &
                      HourlySalaryFormatter & vbCrLf &
                      "Weekly Hours:" & vbTab &
                      WeeklyHoursFormatter & vbCrLf &
                      "======================"
    
            MsgBox(Payroll, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  2. Execute the application
  3. Enter the Employee name as Helene Mukoko, the hourly salary as 2W.o5, and the weekly hours as Thirty Eight
     
    Payroll
  4. Close the message box and the DOS window then return to your programming environment

Using the Default Value of a Boolean Expression

In the previous lesson, we saw that when you declare a Boolean variable, by default, it is initialized with the False value. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim IsMarried As Boolean

        MsgBox("Employee Is Married? " & IsMarried)
        
        Return 0
    End Function

End Module

This would produce:

Boolean Variable

Based on this, if you want to check whether a newly declared and uninitialized Boolean variable is false, you can omit the = False expression applied to it. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim IsMarried As Boolean
        Dim TaxRate As Double

        TaxRate = 33.0

        If IsMarried Then TaxRate = 30.65

        MsgBox("Tax Rate: " & TaxRate & "%")

        Return 0
    End Function

End Module

This would produce:

Boolean Variable

Notice that there is no = after the If IsMarried expression. In this case, the compiler assumes that the value of the variable is False. On the other hand, if you want to check whether the variable is True, make sure you include the = True expression. Overall, whenever in doubt, it is safer to always initialize your variable and it is safer to include the = True or = False expression when evaluating the variable:

Module Exercise

    Public Function Main() As Integer
        Dim IsMarried As Boolean
        Dim TaxRate As Double

        TaxRate = 36.45 ' %

        IsMarried = True

        If IsMarried = False Then TaxRate = 33.15

        MsgBox("Tax Rate: " & TaxRate & "%")

        Return 0
    End Function

End Module

In the previous lesson, we introduced some Boolean-based functions such IsNumeric and IsDate. The default value of these functions is true. This means that when you call them, you can omit the = True expression.

Practical LearningPractical Learning: Using the Default Value of Boolean-Based Functions

  1. To use the default value of the IsNumeric function, change the document as follows:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            . . . No Change
    
            If IsNumeric(StrHourlySalary) Then
                HourlySalaryFormatter = FormatCurrency(CDbl(StrHourlySalary))
            End If
    
            . . . No Change
    
            If IsNumeric(StrWeeklyHours) Then
                WeeklyHoursFormatter = FormatNumber(CDbl(StrWeeklyHours))
            End If
    
            . . . No Change
            Return 0
        End Function
    
    End Module
  2. Save the file

If-Condition Based Functions

 

Choosing a Value

We have learned how to check whether a condition is True or False and take an action. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort, EmploymentStatus As String

        Status = 1
        EmploymentStatus = "Unknown"

        If Status = 1 Then
            EmploymentStatus = "Full Time"
        End If

        MsgBox("Employment Status: " & EmploymentStatus)

        Return 0
    End Function

End Module

To provide an alternative to this operation, the Visual Basic language provides a function named Choose. Its syntax is:

Public Function Choose( _
   ByVal Index As Double, _ 
   ByVal ParamArray Choice() As Object _
) As Object

This function takes two required arguments. The fist argument is equivalent to the ConditionToCheck of our If...Then formula. For the Choose() function, this first argument must be a number (a Byte, an SByte, a Short, a UShort, an Integer, a UInteger, a Long, a ULong, a Single, a Double, or a Decimal value). This is the value against which the second argument will be compared. Before calling the function, you must know the value of the first argument. To take care of this, you can first declare a variable and initialize it with the desired value. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort

        Status = 1

        Choose(Status, ...)

        Return 0
    End Function

End Module

The second argument can be the Statement of our formula. Here is an example:

Choose(Status, "Full Time")

We will see in the next sections that the second argument is actually a list of values and each value has a specific position referred to as its index. To use the function in an If...Then scenario, you pass only one value as the second argument. This value/argument has an index of 1. When the Choose() function is called in an If...Then implementation, if the first argument holds a value of 1, the second argument is validated.

When the Choose() function has been called, it returns a value of type Object. You can retrieve that value, store it in a variable and use it as you see fit. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort, EmploymentStatus As String

        Status = 1

        EmploymentStatus = Choose(Status, "Full Time")

        MsgBox("Employment Status: " & EmploymentStatus)

        Return 0
    End Function

End Module

This would produce:

Choose

Switching to a Value

To give you another alternative to an If...Then condition, the Visual Basic language provides a function named Switch. Its syntax is:

Public Function Switch( _
    ByVal ParamArray VarExpr() As Object _
) As Object
In the .NET Framework, there is another Switch implement that can cause a conflict when you call the Switch() function in your program. Therefore, you must qualify this function when calling it. To do this, use Microsoft.VisualBasic.Switch.

This function takes one required argument. To use it in an If...Then scenario, pass the argument as follows:

Switch(ConditionToCheck, Statement)

In the ConditionToCheck placeholder, pass a Boolean expression that can be evaluated to True or False. If that condition is true, the second argument would be executed.

When the Switch() function has been called, it produces a value of type Object (such as a string) that you can use as you see fit. For example, you can store it in a variable. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort, EmploymentStatus As String

        Status = 2
        EmploymentStatus = "Unknown"

        EmploymentStatus =
		Microsoft.VisualBasic.Switch(Status = 1, "Full Time")

        MsgBox("Employment Status: " & EmploymentStatus)

        Return 0
    End Function

End Module

In this example, we used a number as argument. You can also use another type of value, such as an enumeration. Here is an example:

Module Exercise
    Private Enum EmploymentStatus
        FullTime
        PartTime
        Contractor
        Seasonal
        Unknown
    End Enum

    Public Function Main() As Integer
        Dim Status As EmploymentStatus
        Dim Result As String

        Status = EmploymentStatus.FullTime
        Result = "Unknown"

        Result = Microsoft.VisualBasic.Switch( _
			Status = EmploymentStatus.FullTime, "Full Time")

        MsgBox("Employment Status: " & Result)

        Return 0
    End Function

End Module
 
 
 

What Else When a Condition is True/False?

 

The If...Then...Else Condition

The If...Then statement offers only one alternative: to act if the condition is true. Whenever you would like to apply an alternate expression in case the condition is false, you can use the If...Then...Else statement. The formula of this statement is:

If ConditionToCheck Then
    Statement1
Else
    Statement2
End If

When this section of code is executed, if the ConditionToCheck is true, then the first statement, Statement1, is executed. If the ConditionToCheck is false, the second statement, in this case Statement2, is executed.

Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim MemberAge As Int16
        Dim MemberCategory As String

        MemberAge = 16

        If MemberAge <= 18 Then
            MemberCategory = "Teen"
        Else
            MemberCategory = "Adult"
        End If

        MsgBox("Membership: " & MemberCategory)

        Return 0
    End Function

End Module

This would produce:

If...Then...Else

 

Practical LearningPractical Learning: Using If...Then...Else

  1. To use the Else clause, make the following changes to the file:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim EmployeeName As String
            Dim StrHourlySalary As String, StrWeeklyHours As String
            Dim HourlySalaryFormatter As String
            Dim WeeklyHoursFormatter As String
            Dim Payroll As String
    
            HourlySalaryFormatter = "0.00"
            WeeklyHoursFormatter = "0.00"
    
            EmployeeName = InputBox("Enter Employee Name:",
                                    "Bethesda Car Rental", "John Doe")
            StrHourlySalary = InputBox("Enter Employee Hourly Salary:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrHourlySalary) Then
                HourlySalaryFormatter = FormatCurrency(CDbl(StrHourlySalary))
            Else
                MsgBox("The number " & StrHourlySalary & " you entered " &
                       "for the hourly salary is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            StrWeeklyHours = InputBox("Enter Employee Weekly Hours:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrWeeklyHours) Then
                WeeklyHoursFormatter = FormatNumber(CDbl(StrWeeklyHours))
            Else
                MsgBox("The value " & StrWeeklyHours & " you provided " &
                       "for the weekly hours is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            Payroll = "======================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Employee Payroll =-=-==" & vbCrLf &
                      "-------------------------------------------" & vbCrLf &
                      "Employee Name:" & vbTab & EmployeeName & vbCrLf &
                      "Hourly Salary:" & vbTab &
                      HourlySalaryFormatter & vbCrLf &
                      "Weekly Hours:" & vbTab &
                      WeeklyHoursFormatter & vbCrLf &
                      "======================"
    
            MsgBox(Payroll, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  2. Execute the application
  3. Enter the Employee name as Helene Mukoko, the hourly salary as 2W.o5, and the weekly hours as Thirty Eight
  4. Close the message box and the DOS window then return to your programming environment
  5. To calculate the employee's pay, change the document as follows:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim EmployeeName As String
            Dim StrHourlySalary As String, StrWeeklyHours As String
            Dim HourlySalary As Double
            Dim WeeklyHours As Double
            Dim RegularTime As Double, Overtime As Double
            Dim RegularPay As Double, OvertimePay As Double
            Dim NetPay As Double
    
            Dim Payroll As String
    
            HourlySalary = "0.00"
            WeeklyHours = "0.00"
    
            EmployeeName = InputBox("Enter Employee Name:",
                                    "Bethesda Car Rental", "John Doe")
            StrHourlySalary = InputBox("Enter Employee Hourly Salary:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrHourlySalary) Then
                HourlySalary = CDbl(StrHourlySalary)
            Else
                MsgBox("The number " & StrHourlySalary & " you entered " &
                       "for the hourly salary is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            StrWeeklyHours = InputBox("Enter Employee Weekly Hours:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrWeeklyHours) Then
                WeeklyHours = CDbl(StrWeeklyHours)
            Else
                MsgBox("The value " & StrWeeklyHours & " you provided " &
                       "for the weekly hours is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            If WeeklyHours < 40 Then
                RegularTime = WeeklyHours
                Overtime = 0
                RegularPay = HourlySalary * RegularTime
                OvertimePay = 0
                NetPay = RegularPay
            Else
                RegularTime = 40
                Overtime = WeeklyHours - 40
                RegularPay = HourlySalary * 40
                OvertimePay = HourlySalary * Overtime
                NetPay = RegularPay + OvertimePay
            End If
    
            Payroll = "======================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Employee Payroll =-=-==" & vbCrLf &
                      "-------------------------------------------" & vbCrLf &
                      "Employee Name:" & vbTab & EmployeeName & vbCrLf &
                      "Hourly Salary:" & vbTab &
                      FormatCurrency(HourlySalary) & vbCrLf &
                      "Weekly Hours:" & vbTab &
                      FormatNumber(WeeklyHours) & vbCrLf &
                      "Regular Pay:" & vbTab &
    			FormatCurrency(RegularPay) & vbCrLf &
                      "Overtime Pay:" & vbTab &
    			FormatCurrency(OvertimePay) & vbCrLf &
                      "Total Pay:" & vbTab & FormatCurrency(NetPay) & vbCrLf &
                      "======================"
    
            MsgBox(Payroll, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  6. Execute the application
  7. Enter the Employee name as Helene Mukoko, the hourly salary as 22.35, and the weekly hours as 42.50
     
    Payroll
  8. Close the message box and the DOS window then return to your programming environment
 

If...Then...Else-Condition Based Functions

 

Immediate If

To assist you with checking a condition and its alternative, the Visual Basic language provides a function named IIf. Its syntax is:

Public Function IIf( _
   ByVal Expression As Boolean, _ 
   ByVal TruePart As Object, _ 
   ByVal FalsePart As Object _ 
) As Object

This function operates like an If...Then...Else condition. It takes three required arguments and returns a result of type Object. This returned value will hold the result of the function.

The condition to check is passed as the first argument:

  • If that condition is true, the function returns the value of the TruePart argument and the last argument is ignored
  • If the condition is false, the first argument is ignored and the function returns the value of the second argument

As mentioned already, you can retrieved the value of the right argument and assign it to the result of the function. The expression we saw early can be written as follows:

Module Exercise

    Public Function Main() As Integer
        Dim MemberAge As Int16
        Dim MemberCategory As String

        MemberAge = 16

        MemberCategory = IIf(MemberAge <= 18, "Teen", "Adult")

        MsgBox("Membership: " & MemberCategory)

        Return 0
    End Function

End Module

This would produce the same result we saw earlier.

Practical LearningPractical Learning: Using the Immediate If Function

  1. To use the IIf() function, change the document as follows:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim EmployeeName As String
            Dim Gender As Byte
            Dim StrGender As String
            Dim StrHourlySalary As String, StrWeeklyHours As String
            Dim HourlySalary As Double
            Dim WeeklyHours As Double
            Dim RegularTime As Double, Overtime As Double
            Dim RegularPay As Double, OvertimePay As Double
            Dim NetPay As Double
    
            Dim Payroll As String
    
            HourlySalary = "0.00"
            WeeklyHours = "0.00"
    
            EmployeeName = InputBox("Enter Employee Name:", _
                                    "Bethesda Car Rental", _
                                    "John Doe")
    
            Gender = InputBox("Enter Employee Gender (1=Female/2=Male):",
                                    "Bethesda Car Rental", "1")
            StrGender = IIf(Gender = 1, "Female", "Male")
    
            StrHourlySalary = InputBox("Enter Employee Hourly Salary:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrHourlySalary) Then
                HourlySalary = CDbl(StrHourlySalary)
            Else
                MsgBox("The number " & StrHourlySalary & " you entered " &
                       "for the hourly salary is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            StrWeeklyHours = InputBox("Enter Employee Weekly Hours:",
                                    "Bethesda Car Rental", "0.00")
    
            If IsNumeric(StrWeeklyHours) Then
                WeeklyHours = CDbl(StrWeeklyHours)
            Else
                MsgBox("The value " & StrWeeklyHours & " you provided " &
                       "for the weekly hours is not valid",
                       MsgBoxStyle.Exclamation Or MsgBoxStyle.Critical,
                       "Bethesda Car Rental")
            End If
    
            If WeeklyHours < 40 Then
                RegularTime = WeeklyHours
                Overtime = 0
                RegularPay = HourlySalary * RegularTime
                OvertimePay = 0
                NetPay = RegularPay
            Else
                RegularTime = 40
                Overtime = WeeklyHours - 40
                RegularPay = HourlySalary * 40
                OvertimePay = HourlySalary * Overtime
                NetPay = RegularPay + OvertimePay
            End If
    
            Payroll = "======================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Employee Payroll =-=-==" & vbCrLf &
                      "-------------------------------------------" & vbCrLf &
                      "Employee Name:" & vbTab & EmployeeName & vbCrLf &
                      "Employee Gender:" & vbTab & StrGender & vbCrLf &
                      "Hourly Salary:" & vbTab &
                      FormatCurrency(HourlySalary) & vbCrLf &
                      "Weekly Hours:" & vbTab &
                      FormatNumber(WeeklyHours) & vbCrLf &
                 "Regular Pay:" & vbTab & FormatCurrency(RegularPay) & vbCrLf &
                 "Overtime Pay:" & vbTab & FormatCurrency(OvertimePay) & vbCrLf &
                      "Total Pay:" & vbTab & FormatCurrency(NetPay) & vbCrLf &
                      "======================"
    
            MsgBox(Payroll, MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  2. Execute the application
  3. Enter the Employee name as Raymond Kouma, the gender as 2, hourly salary as 28.25, and the weekly hours as 44.50
     
    Payroll
  4. Close the message box and the DOS window then return to your programming environment
  5. Create a new Console Application named BCR2
  6. In the Solution Explorer, right-click Module1.vb and click Rename
  7. Type BethesdaCarRental.vb and press Enter
  8. Accept to change the file name and change the document as follows:
    Module BethesdaCarRental
    
        Public Function Main() As Integer
            Dim CustomerName As String
            Dim RentStartDate As Date, RentEndDate As Date
            Dim NumberOfDays As Integer
            Dim RateType As String, RateApplied As Double
            Dim OrderTotal As Double
            Dim OrderInvoice As String
    
            RateType = "Weekly Rate"
            RateApplied = 0
            OrderTotal = RateApplied
    
            CustomerName = InputBox("Enter Customer Name:", _
                                           "Bethesda Car Rental", "John Doe")
    
            RentStartDate = CDate(InputBox("Enter Rent Start Date:", _
                                           "Bethesda Car Rental", #1/1/1900#))
            RentEndDate = CDate(InputBox("Enter Rend End Date:", _
                                           "Bethesda Car Rental", #1/1/1900#))
            NumberOfDays = DateDiff(DateInterval.Day, RentStartDate, RentEndDate)
    
            RateApplied = CDbl(InputBox("Enter Rate Applied:",
                                           "Bethesda Car Rental", 0))
    
            OrderInvoice = "===========================" & vbCrLf &
                      "=//= BETHESDA CAR RENTAL =//=" & vbCrLf &
                      "==-=-= Order Processing =-=-==" & vbCrLf &
                  "------------------------------------------------" & vbCrLf &
                      "Processed for:" & vbTab & CustomerName & vbCrLf &
                  "------------------------------------------------" & vbCrLf &
                      "Start Date:" & vbTab & RentStartDate & vbCrLf &
                      "End Date:" & vbTab & RentEndDate & vbCrLf &
                      "Nbr of Days:" & vbTab & NumberOfDays & vbCrLf &
                  "------------------------------------------------" & vbCrLf &
                  "Rate Type:" & vbTab & RateType & vbCrLf &
                      "Rate Applied:" & vbTab & RateApplied & vbCrLf &
                  "Order Total:" & vbTab & FormatCurrency(OrderTotal) & vbCrLf &
                      "==========================="
    
            MsgBox(OrderInvoice,
                      MsgBoxStyle.Information Or MsgBoxStyle.OkOnly,
                   "Bethesda Car Rental")
            Return 0
        End Function
    
    End Module
  9. Execute the application
  10. Enter the customer name as James Wiley, the start date as 11/07/2008, the end date as 11/10/2008, and the rate applied 49.95
     
    Bethesda Car Rental
    Bethesda Car Rental
    Bethesda Car Rental
    Bethesda Car Rental
    Bethesda Car Rental
  11. Close the message box and the DOS window to return to your programming environment

Choose an Alternate Value

We saw how to call a function named Choose where only one value is being considered. The reality is that if there is an alternate value, the function produces a null result. Consider the same program we used earlier but with a different value:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort, EmploymentStatus As String

        Status = 2

        EmploymentStatus = Choose(Status, "Full Time")

        MsgBox(EmploymentStatus)

        Return 0
    End Function

End Module

This would produce:

Choose

 

Notice that the function returns nothing (an empty string). To use this function as an alternative to the If...Then...Else operation, you can pass two values for the second argument. The second argument is actually passed as a list of values. Each value has a specific position as its index. To use the function in an If...Then...Else implementation, pass two values for the second argument. Here is an example:

Choose(Status, "Full Time", "Part Time")

The second argument to the function, which is the first value of the Choose argument, has an index of 1. The third argument to the function, which is the second value of the Choose argument, has an index of 2. 

When the Choose() function is called, if the first argument has a value of 1, then the second argument is validated. If the first argument has a value of 2, then the third argument is validated. As mentioned already, you can retrieve the returned value of the function and use it however you want. Here is an example:

Module Exercise

    Public Function Main() As Integer
        Dim Status As UShort, EmploymentStatus As String

        Status = 2

        EmploymentStatus = Choose(Status, "Full Time", "Part Time")

        MsgBox("Employment Status: " & EmploymentStatus)

        Return 0
    End Function

End Module

This would produce:

Choose

Switching to an Alternate Value

We saw earlier how to call the Switch function in an If...Then condition. Once again, the problem is that if you call it with a value that is not checked by the first argument, the function produces a null value (an empty string). To apply this function to an If...Then...Else scenario, you can call it using the following formula:

Switch(Condition1ToCheck, Statement1, Condition2ToCheck, Statement2)

In the Condition1ToCheck placeholder, pass a Boolean expression that can be evaluated to True or False. If that condition is true, the second argument would be executed. To provide an alternative to the first condition, pass another condition as Condition2ToCheck. If the Condition2ToCheck is true, then Statement2 would be executed. Once gain, remember that you can get the value returned by the Switch function and use it. Here is an example:

Module Exercise
    Private Enum EmploymentStatus
        FullTime
        PartTime
        Contractor
        Seasonal
        Unknown
    End Enum

    Public Function Main() As Integer
        Dim Status As EmploymentStatus
        Dim Result As String

        Status = EmploymentStatus.PartTime
        Result = "Unknown"

        Result = Microsoft.VisualBasic.Switch( _
                    Status = EmploymentStatus.FullTime, "Full Time",
                    Status = EmploymentStatus.PartTime, "Part Time")

        MsgBox("Employment Status: " & Result)

        Return 0
    End Function

End Module

This would produce:

Choose

 
 
   
 

Home Copyright © 2008-2010 FunctionX Next