【问题标题】:How to find lost userform control如何找到丢失的用户窗体控件
【发布时间】:2018-06-14 17:21:41
【问题描述】:

我有一个带有一堆框架的用户表单。我不小心将一个复选框放入其中一个框架中,现在找不到了。它仍然存在,因为我可以用代码设置它的值,但我看不到它。我尝试扩展框架并移动框架中的东西(以防它落后于其中一个控件)。我怎样才能把它拉回来?

【问题讨论】:

  • 按Ctrl+A能看到所有控件的轮廓吗?
  • 哈! Ctrl+A 显示它。它已经被塞进了框架的顶部。奇怪的是,我曾尝试向各个方向拉伸框架,但我猜它已经固定在那里了。 FWIW,Top/Left 参数更改也有效(当我重新尝试时)谢谢!
  • @DukeSilver - 添加了另一种方法来查找 父控件 隐藏您的 '迷路的孩子' 包括 TypeName 过滤器,从而生成结构化的即时窗口中的信息列表。可以为将来的搜索和文档目的提供帮助:-)
  • @DukeSilver - 你能试试我的解决方案吗?如果您发现我的方法很有帮助,我们将不胜感激,因为它提供了结构化和扩展的信息列表。

标签: vba excel userform


【解决方案1】:

这将告诉你复选框在框架内的位置:

Private Sub UserForm_Initialize()

Debug.Print Me.CheckBox1.Left
Debug.Print Me.CheckBox1.Top

End Sub

之后,就是向那个方向展开框架,抓住“逃跑的孩子”的问题了。

【讨论】:

    【解决方案2】:

    找到想要的具有父名称和位置的控件

    您可以使用此示例代码系统地定位任何类型的控件:

    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
    

    显示父控件可帮助您在此处找到丢失的控件,例如框架、多页页面或用户窗体本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2011-02-21
      • 1970-01-01
      相关资源
      最近更新 更多