The best I could come up with is to put the code into the worksheet's
SelectionChange event:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim btn As OLEObject
Dim rng As Range
Set rng = Windows(1).Panes(1).VisibleRange.Cells(1, 1)
Set btn = ActiveSheet.OLEObjects("CommandButton1")
btn.Top = rng.Top + 20
btn.Left = rng.Left + 20
Set rng = Nothing
Set btn = Nothing
End Sub
This won't reposition on scrolling, but when the user clicks into the
newly visible area, the button will reappear. Kinda clunky. Also, this
doesn't work if you've frozen panes.
Your best bet might be, as Rob says, a commandbar object.