When moving from column to column you are moving within the same database record, when moving from row to row you are moving from record to record. Try using the WILLMOVE and MOVECOMPLETE events of the recordset. (You will have to check on the correct name of the events, I am at home at the moment and do not have VB on my home machine to check the correct event names.) One fires as the recordset is about to move and gives you the chance to cancel the move, the other fires after the move is complete (tricky stuff eh!).