
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