我有一堆带有一堆帧的用户表单。我不小心将一个复选框放入其中一个框架中,现在无处可寻。它仍然存在,因为我能够使用代码设置它的值,但我无法看到它。我尝试扩展框架并移动框架中的东西(如果它落后于其中一个控件)。我怎么能把它拉回来?
答案 0 :(得分:1)
这将告诉您框架内复选框的位置:
Private Sub UserForm_Initialize()
Debug.Print Me.CheckBox1.Left
Debug.Print Me.CheckBox1.Top
End Sub
在那之后,这只是一个在这个方向扩展框架并抓住“失控的孩子”的问题。
答案 1 :(得分:0)
使用父名称和职位查找所需的控件
您可以使用此示例代码系统地查找任何类型的控件:
Sub AnalyzeCtrls()
' Purpose: Analyze Userform controls
Dim ctrl As MSForms.Control
Debug.Print "Control Parent Position" & _
vbNewLine & String(76, "-")
For Each ctrl In UserForm1.Controls ' << change to your userform name
' display only "Checkbox" data ' << change to wanted search type
If TypeName(ctrl) = "CheckBox" Then Debug.Print ctrlInfo(ctrl)
Next ctrl
End Sub
辅助功能
Private Function ctrlInfo(ctrl As MSForms.Control) As String
' Purpose: helper function returning userform control information
ctrlInfo = _
Left(TypeName(ctrl) & _
": " & ctrl.Name & String(20, " "), 20) & vbTab & _
" .." & IIf(TypeName(ctrl.Parent) = "UserForm", "Me " & String(15, " "), _
Left(TypeName(ctrl.Parent) & ": " & String(10, " "), 10) & _
Left(ctrl.Parent.Caption & String(15, " "), 15)) & vbTab & _
" Top " & Format(ctrl.Top, "# 000") & "/ Left " & Format(ctrl.Left, "# 000")
End Function
即时窗口中的示例结果
Control Parent Position
----------------------------------------------------------------------------
CheckBox: CheckBox1 ..UserForm1:MyForm Top 006/ Left 570
显示父控件可帮助您在那里找到丢失的控件,例如框架,多页面页面或用户表单本身。