如果没有其他容器,就是top和left 否则用top+容器.top(left++容器.left) 取得控件绝对Top值 Public Function AbsoluteTop(ctlContl As Control) As Single Dim wrkContl As Control Dim wrkTopPos As Single On Error GoTo AbsoluteTopError '初始 Set wrkContl = ctlContl wrkTopPos = 0 '循环 Do If (wrkContl.Container.Name = ctlContl.Parent.Name) Then Exit Do wrkTopPos = wrkTopPos + wrkContl.Top ' 计算位置 Set wrkContl = wrkContl.Container ' 下个控件 LoopAbsoluteTop = wrkTopPos + ctlContl.Parent.Top Exit FunctionAbsoluteTopError: AbsoluteTop = ctlContl.Top + ctlContl.Parent.Top Exit Function End Function
否则用top+容器.top(left++容器.left)
取得控件绝对Top值
Public Function AbsoluteTop(ctlContl As Control) As Single
Dim wrkContl As Control
Dim wrkTopPos As Single On Error GoTo AbsoluteTopError
'初始
Set wrkContl = ctlContl
wrkTopPos = 0
'循环
Do
If (wrkContl.Container.Name = ctlContl.Parent.Name) Then Exit Do
wrkTopPos = wrkTopPos + wrkContl.Top ' 计算位置
Set wrkContl = wrkContl.Container ' 下个控件
LoopAbsoluteTop = wrkTopPos + ctlContl.Parent.Top
Exit FunctionAbsoluteTopError:
AbsoluteTop = ctlContl.Top + ctlContl.Parent.Top
Exit Function
End Function