| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  | ' vim: filetype=vb shiftwidth=4 expandtab | 
					
						
							|  |  |  | ' | 
					
						
							|  |  |  | ' START_INDENT | 
					
						
							| 
									
										
										
										
											2024-05-20 14:37:50 +02:00
										 |  |  | #Const Debug = False | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #If Win64 Then | 
					
						
							|  |  |  | ' Win64=true, Win32=true, Win16=false | 
					
						
							|  |  |  | #ElseIf Win32 Then | 
					
						
							|  |  |  | ' Win32=true, Win16=false | 
					
						
							|  |  |  | #Else | 
					
						
							|  |  |  | ' Win16=true | 
					
						
							|  |  |  | #End If | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  | 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) | 
					
						
							| 
									
										
										
										
											2024-05-20 14:37:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ' Line continuation is implemented as a two-character sequence- | 
					
						
							|  |  |  |     ' whitespace followed by underscore. | 
					
						
							| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  |     With rng | 
					
						
							|  |  |  |         .Cells(1,1).Value = _ | 
					
						
							|  |  |  |             "Line 1 of multiline string; " & _ | 
					
						
							|  |  |  |             "Line 2 of multiline string; " & _ | 
					
						
							|  |  |  |             "Line 3 of multiline string" | 
					
						
							|  |  |  |     End With | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-20 14:37:50 +02:00
										 |  |  |     ' This code block omits the leading whitespace character and so  | 
					
						
							|  |  |  |     ' the trailing underscore will not be treated as line continuation. | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  |     ' This is contrary to Microsoft documentation but it is reported that | 
					
						
							|  |  |  |     ' some Microsoft editors allow it and will still treat the statement | 
					
						
							|  |  |  |     ' as line-continued.   | 
					
						
							|  |  |  |     With rng | 
					
						
							|  |  |  |         rng.Cells(1,1).Value = _  | 
					
						
							|  |  |  |             "Line 1 of multiline string; " & _  | 
					
						
							|  |  |  |             "Line 2 of multiline string; " & _  | 
					
						
							|  |  |  |             "Line 3 of multiline string" | 
					
						
							|  |  |  |     End With | 
					
						
							| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | End Sub | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Private Sub TestStmtLabel() | 
					
						
							|  |  |  |     GoTo stmtLabel | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ' Statement labels are never indented | 
					
						
							|  |  |  | stmtLabel: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | End Sub | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-20 14:37:50 +02:00
										 |  |  | Public Static Function TestStatic(addend As Integer) | 
					
						
							|  |  |  |     Dim Integer accumulator | 
					
						
							|  |  |  |     accumulator = accumulator + addend | 
					
						
							|  |  |  |     TestStatic = accumulator | 
					
						
							|  |  |  | End Function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Friend Function TestFriend(addend As Integer) | 
					
						
							|  |  |  |     Static Integer accumulator | 
					
						
							|  |  |  |     accumulator = accumulator + addend | 
					
						
							|  |  |  |     TestFriend = accumulator | 
					
						
							|  |  |  | End Function | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2024-05-20 14:37:50 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | Sub TestDateLiteralAfterLineContinuation | 
					
						
							|  |  |  |     Dim birthday as Date | 
					
						
							|  |  |  |     birthday = _ | 
					
						
							|  |  |  |         #January 1, 1901# | 
					
						
							|  |  |  | End Sub | 
					
						
							| 
									
										
										
										
											2022-12-31 15:30:45 +00:00
										 |  |  | ' END_INDENT |