non ho ben capito cosa faccia la tua funzione ma non funziona,ovvero se apro un form "figlio" poi lo chiudo e poi lo riapro ancora NON compare più nella posizione iniziale ma più in basso e ogni volta che riperto le stesse operazioni va sempre più in basso..

Inoltre lanciando il programma ha individuato degli errori bella tua funzione...così ho dovuto modificarla in questo modo...per favore prova a controllarla e a dirmi se per caso queste anomalie sono dovute al codice sbagliato :


codice:
Public Sub FormWinRegPos(MyForm As Form, Optional pbSave As Boolean)

    On Error GoTo EH
    With MyForm
        SaveSetting App.EXEName, .Name, "WindowState", .WindowState
    If .WindowState = vbMinimized Or .WindowState = vbMaximized Then
        .WindowState = vbNormal
        
        SaveSetting App.EXEName, .Name, "Top", .Top
        SaveSetting App.EXEName, .Name, "Left", .Left
        SaveSetting App.EXEName, .Name, "Height", .Height
        SaveSetting App.EXEName, .Name, "Width", .Width
    Else
        .Top = GetSetting(App.EXEName, .Name, "Top", .Top)
        .Left = GetSetting(App.EXEName, .Name, "Left", .Left)
        .Height = GetSetting(App.EXEName, .Name, "Height", .Height)
        .Width = GetSetting(App.EXEName, .Name, "Width", .Width)
        .WindowState = GetSetting(App.EXEName, _
            .Name, "WindowState", .WindowState)
    End If
End With
Exit Sub
EH:
MsgBox "Error " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Sub