This guide is written to provide some overview of how to use the race entry software. The software is written as an excel spreadsheet with extensive visual basic add-ons. Although combining data and the program itself is not particularly good programming style, it does have the advantage that the only thing to be passed around is one excel spreadsheet, and as long as the user has a (recent 2003+) copy of Excel it should run.

The latest demo version can be found here - it has a few races filled in - you can try creating a few more races.

Latest Demo Version

This description of the tasks involved is broken up into a number of areas, namely

Pre-Race Day

Before race day there are a number of tasks to do in preparation for the event itself. These are namely:

Updating the Members List

To update the members list you must first get an update form the membership secretary. This will be a members list in Excel. Once you have this file you can proceed. On opening up the Race Entry Sheet (and after accepting that you will enable macros) you should be presented with the following:

If you don’t see something similar to this then press on the “tabs” at the bottom left and select “BHPC Main”. This is the main sheet showing what you have to do on the day, however we don’t need all this at the moment. You will notice that there is a scroll bar on the right hand side. Use this to scroll down the page a bit and you will see some more buttons which are the maintenance tasks. These are what we will describe at the moment.

 The two buttons we need to look at for the moment are the two buttons at the bottom right. “Read in New Member List” and “Associate Riders with Members”. The reason why this step is required is that when a member signs on at the race they will give their name. This name may be different from that which they are as a member (for example they may use David and Dave). Although it is close – it is difficult for a computer to associate an exact match on this. So you will have to help it. What you are then doing is saying that “Dave Doe” in the race software – is the same as the member “David Doe”. Once the programme knows this association – it will remember it from then on. Press the “Read in New Member List” button

From this point on the instructions are given on the page.

Producing Sign-On Sheets

This is done from the maintenance tasks and is very easy (make sure you have done the member updating before this to make the maximum number of users on the sheet) then press the “Produce Race Sign On Sheet Data”. It will produce a sign on sheet tab and will look something like this.

You can print this by selecting print and doing it in the normal manner. You may need to set up the printer to print in “Landscape mode” (sideways). Once printed, it is worth stapling them together – otherwise it gets a bit of a free for all on the day.

Race Day

On opening up the Race Entry Sheet (and after accepting that you will enable macros) you should be presented with the following:

It is probably a good idea to save it now with the name of the event Select “File>Save As” and follow the dialogues try and enter a name associates with the event you will be using it for.

The screen might look confusing but the arrows just show you what you should do and the order in which you should do them. Don’t worry if something means you have to go back – e.g. someone registers late – just go back to the required screen make the changes, and then follow the arrows from there going through the screens and making the updates until you are back where you were.

 Each button is an action to be completed, namely

So let’s start form the left hand side.

Choose Circuit

The “Choose Circuit” button will produce a dialogue box that looks like

Main Chose Circuit Screen

 You can see the events in the scroll box and can scroll down by using the scroll box on the right hand side of the “Events” area. By selecting the correct event and pressing “Accept” then you can continue on. If you don’t want to change the event then just press “Quit”.  There is the concept of Rounds.  The season is made up of 'Events' e.g. Reading; At an Event there are a number of 'Rounds' (note that at most there are are only a single round); Each Round has a number of 'Races'. This allows for organizers to arrange a round in the morning say of 3 20 minute races, followed by another round of 2 races of 40 mins in the afternoon.  Each rider will rider once in each round.  All rounds are used to determine the points.  This is accomplished by using the Merge Method drop-down.

Just before the right-hand column you can see the weighting associated with a race.  This will be used to work out the final points.  The weighting should be an integer, and is used to determine the ratio. so If there were three rounds, the first having a weighting of 1, the second 2 and the third 3, then the first race will count as a sixth of the points the second a third and the third, half of the points.

On the right hand side of the screen you can see the distance of a lap (this can be overwritten (note that it is in miles - to convert kilometers to miles divide by 1.609).  If you are using multiround then you can have a different distance for each round (note that if you are doing a standing km, or 200m as one of the rounds, then it is this distance you put in and not the lap distance.  The weighting is what you will use to allocate the points 1 is the default.  So as an example to have 20% allocated to round 1, 40% to Round 2 and 40% in round three, you would enter the weightings 1,2,2 in the rounds weighting boxes.

On the lower left handside you see an option to use tags.  This needs to be selected when using the tag timing system, and will force you to enter a valid tag number when entering a rider. Select or deselect as necessary.

If you have changed the Event, you should now see it updated in the main page.

Enter Racers

Pressing the “Enter Racers” button presents you with the following dialogue box.


It is normally populated from the previous race – don’t worry, press the “Delete All” button and it will ask you to confirm twice that you really want to delete them.

You should now have an empty “Racers” area.

The normal way of entry is to use the Race Number. Ask the contestant for a race number (if they are new and don’t have a number then give them a new number and enter that. On entering a number the details are filled in if known. So the racers name, and bike are filled in. If this is not the same racer, then they are using someone else’s number. There might be a good reason for this (borrowed bike, for example) but they should not use the number for no good reason (otherwise we have two people using one number and there are problems later on.

The bike name will also be populated. There may be more than one bike associated with the number/rider and these will be listed in the area below the bike name. Select one of these (the classes are also important!) or if none of those enter the new name. The classes are listed and should be checked as appropriate. They will normally be populated if known.

The next section is about payment. E.g. The Annual Race (have they paid for the season) and Member are auto-filled and can be overridden. The price they should pay is then displayed in the “£” box. The comment box is just for you to note down anything unusual “e.g. said he was member, so allowed him in as member”

When you have finished all that – press the “Add” button. You will now see the rider in the large “Racers” area.

Should you make mistake, or something needs to be changed, you can delete the rider from the Riders” area by selecting it, and pressing the “Delete” button.

The total number of riders entered in today’s racing is displayed on the top right.

When you have finally entered all the racers press the “Next” Button to return to the Main screen again.

Allocate Racers to Races

This screen allows you to choose which racers are in which race (people may have preferences as well.) The software tries to allocate people to races itself. Generally those that are faster are in race 1 and slower are placed in later races.

Race allocation screen

You might not want the fast race first – but don’t worry about that yet. Just get all the people that should be racing together in the same race. We can change the order later. The default is two races. But you might want to change this – in which case use the up and down arrows at the top of the page to change them. The people will be reallocated automatically.

Once the number of races is correct, look at the racers. You should be able to see some racers that should move rot other racers, in which case select the racer and press the “<<<<” or “>>>>” buttons to move them to the next race (note you may have to do this again to move them two races to the right). To help you make sure that all the racers are in the correct race, you can use the filter boxes at the top. By clicking the “L” option box for example – only ladies are displayed. You can use this as another check to make sure everyone is in the correct race. I would recommend checking “F”, M”, “L”, “A” and “J” to make sure they are in the correct race.

The warning box will try and warn you when there is something strange (e.g. the same rider twice in the same race, or same number in twice) so that you can change it.

So now everyone is in the correct race, but you might want to change the race order. Press the “Reorder Races” button in the top right and you will see


By clicking the <Swap> buttons you can swap the order. Pressing “Quit” will not change anything. Pressing “Set” will change the races to the new order and both will return you to the Race allocation screen.

There is also a <Copy Riders from another Round> - This is useful if you have multiple rounds, the button allows you to set up a round with the same riders/race allocation as another round.  This is the normal situation, that people will ride in the same races in all rounds - but you could change this if required.

 When you are happy with the selection – press the “Apply” button )or Accept to Apply and leave the screen.  Note if you have selected multiple rounds you will have to do this for each round.  If you are doing the same racers to races in each round set up the first then apply and click the round button to 2 to set up the second. If you want to reset everything and start again, then enter the “Reset” button. Note if you have made any changes "Reset" and "Quit" require you to confirm the action.

Enter Race Details

This dialogue box allows you to enter details about today’s races.

The dialogue box is a relatively easy box. Enter the Race Time (including Mins or Hours), how many extra laps, and the times of the races. You can then select the printer from the list and print out today's agenda.  This will inform everyone of which race they are in. The races are formatted with the entrants and the expected start times of the races. At the same time, if tags are being used a list of all the tags used will be created in the TagSheet worksheet.  This may be selected and printed if required using the normal Excel print facilities.  Alternatively this may be generated by using the button in the maintenance button section.

Note: It is not uncommon for racers to want to change races that they are in.  This is not a problem - just go back to the previous screen and you can move the racer to the required race and re-do the agenda.

If you are using multiple rounds then the display is slightly different, and you will have to fill in that for each round.

Enter Racer's Results

The race times dialogue sheet looks quite complex though is relatively simple. The sheet is to enter the racers times and laps.

The Race box allows you to choose the race that you are entering the details. To change it, use the up and down arrows next to the race number box. The main box on the screen shows the racers in that particular race – together with the laps and finish time (if entered). The filter, and sort boxes allow you to choose what is displayed and how they are entered.

The Filter box allows you to display all the racers, only those that you have entered or all the ones with un-entered times. It is useful while entering times to select the “Unentered Times” option.

The Sort option shows how it is displayed. Number or Name is useful while entering times. Finish order, and Race order are useful to check the race results and the final finish orders at the end of inputting the data.

Name, Number and Bike are filled in by selecting (clicking on) the racer in the main window that you want to enter the details. After selecting a racer, the Name, Number and bike are filled in, and the Cursor is placed in the laps field. Enter the laps completed, and then select the Time box (pr just press <Tab>)

You can now fill in the time field. It is strict on format. Times can be entered in any of the following the placement of the ‘:’s and ‘.’s are important:

  • h:mm:ss.hh
  • mm:ss.hh
  • m:ss.hh

where h, mm, ss and h are the hours, minutes, seconds, and hundredths. You cannot miss off say one of the hundredths.

DNF is ticked if the rider didn’t finish the race. Note that the DNS - is used to say a racer did not start.  This is particularly useful when you have multiple rounds.  There is no way to exclude someone from a round, so you may have to assign someone to a race and set them as a DNS to accomplish this.

When you have completed the riders race information, pressing the “Enter” button updates the information in the main window. (If you had selected the “Unentered Times” option for filtering the entry will be removed form the window).

The “Read in Times from Timing Prog” button is used to read in the times from the ancillary program used to enter lap times. If you have used this programme, then press the button and select the file to read. The times will then be updated.

The “Next Step” button is used to close the window, once all the times have been entered.

If you have selected multiple rounds then a round button will be displayed in the top left corner.  To avoid confusion the round is also displayed in large letters at the top of the form to avoid confusion. Otherwise it behaves exactly the same.

Generate Result Sheets

This dialogue allows the printing out of the Race Results and the Final Results.  (You can select the printer (though it will still be set form the previous time you set it).  The final results shows the positions overall after the merge.

Generate Website Tables

Finally this write out the results and produces the XML and HTML files to use on the Website.  These are created in the same directory and there should be one with name looking something like the event name (say reading09.xml) and one with the final results (say table08.xml).  The results are also stored with the seasons results for use again.


To access the Maintenance functions, just scroll down from the main page to reveal a few rows of buttons revealing the functions available.

The three pre-race functions, 'Read in New Member List', 'Associate Riders with Members' and 'Produce Sign On Sheet Data' have already been discussed in the pre-race notes.  The others shall be described here.  These are namely:

These areas shall now be discussed. however there are also some other tasks described here - only less automated:


This screen allows for the editing of race results.  By race results, times, bike name, class, laps, finish time, DNF and DNS status for any race in the season. Where possible this will allow multiple races to be edited at the same time.

The main maintenance screen has 3 main functions.  These are opened as the various tabs on the pages and are:

These shall be discussed individually later, however they all sit within a framework of the Maintenance Form.  In each tab (mentioned above) changes are identified and made to the race history.  However no race results are rebuilt.  This is why there is a framework.  Each time a change is made to the details of a particular event, the event is logged in the 'Events to Rebuild'.  After you have finished making all the changes, these results need to be created. In order to complete this, press the 'Rebuild Results' page.  This will then rebuild all the results for all Events that have been changed.

Individuals Result

The maintenance page - individual racing result tab allows for the changing of race times, laps, DNF and DNS status.

To use this screen you move from left to right. Click on the event that you want to change.  You will then be selected with a list of Riders.

Selecting a rider, will reveal a list of bikes (this will normally be one, though there may be more in exceptional circumstances). Once you have selected this, the results displayed, for all rounds.  These can now be corrected as required.  Once you have done this, Update updates the results in the history database. (Note this hasn't rebuilt all the race pages yet).  You should notice that once Update has been pressed the race will appear in the 'Events to Rebuild' in the top left corner of the window. If for some reason you have made an unwanted change to the data - you can always use Reset - this replaces the data with the last saved values.  You can now repeat this for as many riders and events as necessary.

Riders Class (and Bike Details)

This tab allows the changing of bike or class details for a rider in any, or multiple races.

This tab again works from left to right.  select the name of the Rider.  The Bike area is then filled with all the bikes that that person has ridden that season.  Once you select the bike that you require, the 'Possible Events' area is filled with all Events that that rider and bike have ridden in.  You can then click on any events that you want to change and they will move to the 'Chosen Events' area.  (if you want you can move them between these two boxes by clicking on the event.

Once selected the Bike and Classes are displayed.  These may be amended as necessary.  When you press Update, this will update the changes in the history (and if necessary add a new entry in the riders database).  It will also show the races in the top left corner that require the results regenerated.  You may continuing changing more these as necessary.

Force Rebuild

This sheet is there to force the rebuilding of the web files for a particular race.

In this you can select the races that you want to regenerate. Clicking on an event moves it between the 'Possible Events' and the 'Chosen Events'.  When you have selected the correct events. Press the 'Update' button.  You should then see these events appear in the list in the top right of the page.

Import Data

This allows the import of data from other sheets into this table. It will allow Riders Database, and previous Events (currently only planned). On pressing the button you will see the following form

Click on 'Open File' to browse your system and select the file that contains the data to import.  the data is validated to see if it matches that in the current file (e.g. Dthe riders database must have the same class labels as the one being imported.  You can then select what you want to import and then click import.

In the case of the Riders Database riders and bikes from the imported list are added to the current list (only if they are not in there already).

Reveal All Sheets

This simply reveals all the hidden sheets that are used to calculate the class results.

Hide All Sheets

This simply hides all the normally hidden sheets that are used to cacluate the class results.

Pre-Season Setup

These are only brief notes, and assumes that you are reasonably familiar with the sign-on program. You should do the following tasks in order

  1. Re-define the classes for the next season.  To do this you need to reveal sheet 'SetUpClassInfo'.  Use this to define the classes that you want to change. then define the rules for the next season - there is also a utility you can use to produce a list of all valid classes.
  2. Set up seasons events - Reveal the 'Track Info' tab.  Define the events and distances
  3. If any of the classes were changed you need to iether make corresponding changes in the Rider DB, or clear it.  You may wamt to perform some pruning on riders not used in the last year as well.
  4. Press the button "Reset" at the bottom of the main page
  5. Run macro 'SetUpClassSheets'
  6. Clear all entries in History_Racers and History_Parameters


Latest Demo Version