' vim: filetype=vb shiftwidth=4 expandtab
'
' START_INDENT
Public Type GEmployeeRecord     ' Create user-defined type. 
    ID As Integer               ' Define elements of data type. 
    Name As String * 20 
    Address As String * 30 
    Phone As Long 
    HireDate As Date 
End Type 

Public Enum InterfaceColors 
    icMistyRose = &HE1E4FF& 
    icSlateGray = &H908070& 
    icDodgerBlue = &HFF901E& 
    icDeepSkyBlue = &HFFBF00& 
    icSpringGreen = &H7FFF00& 
    icForestGreen = &H228B22& 
    icGoldenrod = &H20A5DA& 
    icFirebrick = &H2222B2& 
End Enum

Enum SecurityLevel 
    IllegalEntry = -1 
    SecurityLevel1 = 0 
    SecurityLevel2 = 1 
End Enum 

Public Function TestConditional (number As Integer, ext As String) As Boolean
    Dim inRange As Boolean

    Select Case number
        Case <= 0
            inRange = False
        Case > 10
            inRange = False
        Case Else
            inRange = True
    End Select

    ' This is a special case identified in the indent script.
    Select Case number
    End Select

    If ext = ".xlm" Then
        If inRange Then
            TestConditional = True
        Else
            TestConditional = False
        End If
    ElseIf ext = ".xlsx" Then
        If inRange Then
            TestConditional = False
        Else
            TestConditional = True
        End If
    Else
        TestConditional = False
    End If
End Function

Private Sub TestIterators (lLimit As Integer, uLimit As Integer)
    Dim a() As Variant
    Dim elmt As Variant
    Dim found As Boolean
    Dim indx As Integer
    Const specialValue As Integer = 5

    If uLimit < lLimit Then
        Exit Sub
    End If

    ReDim a(lLimit To uLimit)
    For indx=lLimit To Ulimit
        a(indx) = 2 * indx
    Next indx

    found = False
    For Each elmt in a
        If elmt = specialValue Then
            found = True
        End If
    Next elmt

    If found then
        indx = uLimit
        Do While indx >= lLimit
            indx = indx - 1
        Loop
    End If

End Sub

Public Sub TestMultiline (cellAddr As String, rowNbr As Long)
    Dim rng As Range

    Set rng = Range(cellAddr)
    With rng
        .Cells(1,1).Value = _
            "Line 1 of multiline string; " & _
            "Line 2 of multiline string; " & _
            "Line 3 of multiline string"
    End With

    ' The following lines have whitespace after the underscore character
    ' and therefore do not form a valid multiline statement.  The indent
    ' script correctly treats them as four single line statements contrary
    ' to the author's obvious indent.
    rng..Cells(1,1).Value = _ 
    "Line 1 of multiline string; " & _ 
    "Line 2 of multiline string; " & _ 
    "Line 3 of multiline string"

End Sub

Private Sub TestStmtLabel()
    GoTo stmtLabel

    ' Statement labels are never indented
stmtLabel:

End Sub

Sub TestTypeKeyword()
    Type EmployeeRecord         ' Create user-defined type. 
        ID As Integer           ' Define elements of data type. 
        Name As String * 20 
        Address As String * 30 
        Phone As Long 
        HireDate As Date 
    End Type 
    Dim varType As EmployeeRecord
End Sub
' END_INDENT
