If this is a form on a navigation form or a subform on a form on a navigation form, you should make that clear. The clue would seem to be that it works when the said form has the focus, so I'd try objActiveForm.SetFocus before goto (if that's the right form, but as I'm saying, it's not clear). If it isn't, then perhaps refer to the correct form. However, I don't see the need for a requery at all, and that makes the cursor go to the first record in a continuous or datasheet form. Nor do we know where the button is in relation to the form you want to goto a record on; that might be relevant. I suppose there is a noticeable difference and that it works as expected if, as you say, you select a record on the form, so it should be safe to say that the fact that it's a datasheet has no bearing.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.