Just a feedback on the final solution to my problem:

Although I did learn a lot from the advise I got, in the end I was not able to make any of them work well enough to solve my particular problem. Storing the userform location in registry is a great alternative, but I could not make it work with the userform.hide command. As far as I could find out, the method requires that the userform.unload method is used.

To manipulate the form location according to the active cell poisition was a very quick and easy method, but the problem turned out to be that as the active cell could move out of the visible section of the sheet, the userform would also disappear.

So I finally found a procedure in one of J.Walchenbach's books and it sort of works very well and looks very sophisticted to the user, although it is not the most efficient method (which would be to drag the form to a new position and stor the location in the registry..if it only would work with the userform.hide method..) With J. Walchenbach's method I have inserted 3 scrollbar controls in my userform together with the code below. This allows the user to scroll the sheet horisontally, vertically and also to zoom in and out, while the userform is still displayed.


Private Sub UserForm_Initialize()
LabelZoom.Caption = ActiveWindow.Zoom
'zoom
With ScrollBarZoom
.Min = 10
.Max = 400
.SmallChange = 1
.LargeChange = 10
.Value = 100
End With
'Horisontal Scrolling
With ScrollBarColumns
.Min = 1
.Max = 256
.Value = ActiveWindow.ScrollColumn
.LargeChange = 25
.SmallChange = 1
End With
'vertical scrolling
With ScrollBarRows
.Min = 1
.Max = ActiveSheet.Rows.Count
.Value = ActiveWindow.ScrollRow
.LargeChange = 25
.SmallChange = 1
End With
End Sub
 
Private Sub ScrollBarZoom_Change()
With ActiveWindow
.Zoom = ScrollBarZoom.Value
LabelZoom = .Zoom & "%"
End With
End Sub

Private Sub ScrollBarColumns_Change()
ActiveWindow.ScrollColumn = ScrollBarColumns.Value
End Sub
 
Private Sub ScrollBarRows_Change()
ActiveWindow.ScrollRow = ScrollBarRows.Value
End Sub