PARTIAL VBA CODE EXAMPLE TO HANDLE RACE REGISTRATION AND RESULTS

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo errorroutine

Dim iColStartTime As Integer

Dim iColFinishTime As Integer

Dim iColRiderNo As Integer

Dim iColName As Integer

Dim iColGrade As Integer

Dim iColActualTime As Integer

Dim iColTotalRiders As Integer

Dim iRowHeader As Integer

Dim iColFinishChute As Integer

Dim iColFinishOrder As Integer

Dim iColComments As Integer

Dim iRowFound As Integer

Dim iFirstEmptyRow As Integer

Dim iFirstEmptyRowRiderNo As Integer

Dim iRaceTypeRow As Integer

Dim iTotChanged As Integer

 

Dim iCurrentCol As Integer

Dim iCurrentRow As Integer

Dim sTime As String

Dim i As Integer

 

'Debug.Print "wrkchg"

 

If mbAlteringData Then

  Exit Sub

End If

iCurrentCol = Target.Column

iCurrentRow = Target.Row

mbAlteringData = True

 

If miMinVisitorNumber = 0 Then

   miMinVisitorNumber = 700

End If

 

SignOnProtectSheet

 

PopulateSignonSheetColKeys iColStartTime, _

 iColFinishTime, _

 iColRiderNo, _

 iColName, _

 iColGrade, _

 iColActualTime, _

 iColTotalRiders, _

 iRowHeader, _

 iColFinishChute, _

 iColFinishOrder, _

 iColComments, _

 iRaceTypeRow

 

If Target.Count > 1 Then

  Application.ScreenUpdating = False

End If

 

 

If Target.Row = iRaceTypeRow Then

   If Target.Column = iColFinishTime Then

      HideShowStartTimesSheet Cells(Target.Row, Target.Column)

   End If

   mbAlteringData = False

   SignOnProtectSheet True

   Exit Sub

End If

 

ElapsedTime "Start Change", True

 

If Target.Row = iRaceTypeRow - 1 Then

   If Target.Column > 1 Then

      If Cells(Target.Row, Target.Column - 1) = "Distance:" Then

         AlterDistance Target.Row, Target.Column

      ElseIf Cells(Target.Row, Target.Column - 1) = "Start Time:" Then

         If Len(Cells(Target.Row, Target.Column)) = 0 Then

            Cells(Target.Row, Target.Column) = msPrevStartTime

         End If

      End If

   End If

ElseIf IsCommand(Target.Row, Target.Column, iColGrade) Then

   ProcessCommand Cells(Target.Row, Target.Column), Target.Row, Target.Column, _

            iColStartTime, _

            iColFinishTime, _

            iColRiderNo, _

            iColName, _

            iColGrade, _

            iColActualTime, _

            iColTotalRiders, _

            iRowHeader, _

            iColFinishChute, _

            iColFinishOrder, _

            iColComments

ElseIf Target.Row = iRowHeader Then

    CreateNewRow Target.Row, _

            iColStartTime, _

            iColFinishTime, _

            iColRiderNo, _

            iColName, _

            iColGrade, _

            iColActualTime, _

            iColTotalRiders, _

            iRowHeader, _

            iColFinishChute, _

            iColFinishOrder, _

            iColComments

ElseIf Target.Column = 1 And Target.Row > iRowHeader Then

   ' a delete might have occured

   ReinstateSurnameFormula

  

   AdjustRaceTypeRow iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, _

                     Target

ElseIf Target.Column = iColActualTime And Target.Row > iRowHeader Then

     WarningFlash Target.Row, Target.Column, True, False

     CreateNewRow Target.Row, _

            iColStartTime, _

            iColFinishTime, _

            iColRiderNo, _

            iColName, _

            iColGrade, _

            iColActualTime, _

            iColTotalRiders, _

            iRowHeader, _

            iColFinishChute, _

            iColFinishOrder, _

            iColComments

 

ElseIf Target.Column = iColFinishOrder And Target.Row > iRowHeader Then

   AdjustFinishOrder Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow

 

ElseIf (Target.Column = iColStartTime Or _

   Target.Column = iColFinishTime) And Target.Row > iRowHeader Then

   AdjustStartFinishTime iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, _

                     Target

  

ElseIf Target.Column = iColRiderNo And Target.Row > iRowHeader Then

   AdjustRiderNo Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, Target

                    

ElseIf Target.Column = iColRiderNo - 1 And Target.Row > iRowHeader Then

   AdjustGender Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow

  

ElseIf Target.Column = iColName And Target.Row > iRowHeader Then

   AdjustName Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, Target

ElseIf Target.Column = iColGrade And Target.Row > iRowHeader Then

   AdjustGrade Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, Target

ElseIf Target.Column = iColFinishChute And Target.Row > iRowHeader Then

        AdjustFinishChute Target.Row, Target.Column, _

                          iColStartTime, _

                          iColFinishTime, _

                          iColRiderNo, _

                          iColName, _

                          iColGrade, _

                          iColActualTime, _

                          iColTotalRiders, _

                          iRowHeader, _

                          iColFinishChute, _

                          iColFinishOrder, _

                          iColComments, _

                          iRaceTypeRow, Target

ElseIf Target.Column = iColComments And Target.Row > iRowHeader Then

   AdjustComments Target.Row, Target.Column, _

                     iColStartTime, _

                     iColFinishTime, _

                     iColRiderNo, _

                     iColName, _

                     iColGrade, _

                     iColActualTime, _

                     iColTotalRiders, _

                     iRowHeader, _

                     iColFinishChute, _

                     iColFinishOrder, _

                     iColComments, _

                     iRaceTypeRow, Target

 

End If

 

If iCurrentRow > iRowHeader Then

   FormatAllTimes iCurrentRow, iColStartTime, iColFinishTime, iColActualTime, iColRiderNo, iColFinishChute

End If

 

Me.cmdClear.Visible = Val(Cells(iRaceTypeRow, iColRiderNo).Value) > 0

 

 

UnlockRiderRows iRowHeader, iColRiderNo

 

On Error Resume Next

iTotChanged = Target.Columns.Count

On Error GoTo errorroutine

If iTotChanged = 0 Then

   'target object has been lost, possibly due to delete of the row containing the target

   CreateNewRow ActiveCell.Row, _

        iColStartTime, _

        iColFinishTime, _

        iColRiderNo, _

        iColName, _

        iColGrade, _

        iColActualTime, _

        iColTotalRiders, _

        iRowHeader, _

        iColFinishChute, _

        iColFinishOrder, _

        iColComments, _

        2

 

ElseIf iTotChanged < 26 Then

   ' less than a complete row

   CreateNewRow Target.Row, _

        iColStartTime, _

        iColFinishTime, _

        iColRiderNo, _

        iColName, _

        iColGrade, _

        iColActualTime, _

        iColTotalRiders, _

        iRowHeader, _

        iColFinishChute, _

        iColFinishOrder, _

        iColComments, _

        Target.Rows.Count

Else

   'multiple rows - possibly a full row deleted

   CreateNewRow Target.Row, _

        iColStartTime, _

        iColFinishTime, _

        iColRiderNo, _

        iColName, _

        iColGrade, _

        iColActualTime, _

        iColTotalRiders, _

        iRowHeader, _

        iColFinishChute, _

        iColFinishOrder, _

        iColComments, _

        2

End If

 

mbAlteringData = False

ResetSavedRiderNo ActiveCell.Row, ActiveCell.Column

 

ElapsedTime "End Change", False

 

errorroutine:

If Err.Number <> 0 Then

   LogMsg "Error in WortsheetChange " & Application.ActiveSheet.Name & " " & Err.Description

End If

mbAlteringData = False

If Not Application.ScreenUpdating Then

   Application.ScreenUpdating = True

End If

 

SignOnProtectSheet True

 

Exit Sub

Resume

End Sub

 

Download copy Now!

Download the spreadsheet now (2.7Mb) or zipped file here (950Kb). See Screen Shot.

 

OVER THE TOP

Cyclist Getting Road rage - Passenger threw bottle over top of car at a lob, and hit the top bar of the bike

Beutiful number plate on the car, and $1000 fine - Priceless

Angry Car driver - Fined $1000