Steve,
Because when foucs is not in the grid the grid has no activerow. Also ActiveRow is a proeprty to be avoided in grids as it forces the grid to reload its entire record set to find out what is the activerow. If you want ot see this just put one line of code into the grid's afterrowcolchange event;
lnJunk = THIS.ActiveRow
Now give the grid a recordsource of a few thousand record and try arrowing up and down. Comment out the line and do it again.