شما می تونید برای حل این مشکل از یک تابع Recursive استفاده کنید
Option Explicit
Private Type Position
Left As Single
Top As Single
End Type
Private Sub Form_Load()
'
MsgBox GetPosition(Text1).Left
MsgBox GetPosition(Text1).Top
'
End Sub
Private Function GetPosition(objectTemp As Object) As Position
'
Dim tempPosition As Position
Dim tempContainerPosition As Position
If Not TypeOf objectTemp Is Form Then
tempPosition.Left = objectTemp.Left
tempPosition.Top = objectTemp.Top
If Not objectTemp.Container Is Nothing Then
tempContainerPosition = GetPosition(objectTemp.Container)
tempPosition.Left = tempPosition.Left + tempContainerPosition.Left
tempPosition.Top = tempPosition.Top + tempContainerPosition.Top
If TypeOf objectTemp.Container Is PictureBox Then
tempPosition.Left = tempPosition.Left + 30
tempPosition.Top = tempPosition.Top + 30
End If
End If
End If
GetPosition = tempPosition
'
End Function