【问题标题】:Ellipsis Textbox for VBA Userform File SelectVBA 用户表单文件选择的省略号文本框
【发布时间】:2015-11-24 17:00:54
【问题描述】:

我正在尝试为我一直在研究的一个广泛的 VBA 程序创建一个路径选择用户界面,但我似乎无法获得我想要的省略号文本框。这是一个非常常见的功能,尤其是在选项表中。这是我想直接从 VBA 选项面板获得的示例:

我很想找到一种在用户窗体中获得相同功能的方法。到目前为止,我发现的唯一解决方案是使用启用了省略号箭头选项的组合框。但是,似乎没有一种明显的方法可以使用组合框箭头的激活来运行对话框,似乎也没有一种方法可以使它看起来不像组合框。最后的手段我在文本框下方使用了一个按钮,但我真的更喜欢一种不那么笨重的方式。

任何解决方案将不胜感激。

【问题讨论】:

    标签: vba excel userform


    【解决方案1】:

    到目前为止,我发现的唯一解决方案是使用组合框 省略号箭头选项已启用。不过,好像没有 使用组合框箭头的激活来运行 对话框,似乎也没有办法让它看起来不像 组合框

    您的建议确实有效,而且肯定比让两个控件一起工作更简单、更优雅,Button + Textbox。

    Combo 可以通过以下方式完美实现所需的功能。

    1) 在设计模式下,将按钮样式设置为省略号

             DropButtonStyle = fmDropButtonStyleEllipsis
    

    最终,通过设置设计时属性,使省略号仅在输入组合时显示:

             ShowDropButtonWhen = ShowDropButtonWhenFocus
    

    2) 如果需要,您可以设置其他设计时属性以获得一些外观。但是,默认值看起来不错。

    3) 将以下处理程序添加到父用户窗体。 sn -p 模拟对话框的启动并获得新值或取消。它不显示任何下拉窗口。 (但你仍然可以控制:如果你想根据某种条件显示它,你仍然可以调用方法ComboBox1.DropDown)

    Private Sub ComboBox1_DropButtonClick()
        ' The following two lines avoid to call the routine twice, at entry and at exit
        Static i As Integer
        i = (i + 1) Mod 2: If i = 0 Then Exit Sub
    
        With ComboBox1
            s = InputBox("enter some text", , .Value) '<~~ simulates any dialog
            If s <> "" Then .Value = s
            SendKeys ("{Enter}") '<~~ to close immediately the dropdown window
        End With
    End Sub
    

    试试看;)

    【讨论】:

    • 非常感谢 - 这正是我需要完成的最后润色。使用SendKeys 关闭下拉菜单是GENIUS。
    • @jaysoncopes 很高兴它有帮助。事实上,这只是为了找到最后的接触;)
    【解决方案2】:

    不仅组合框有下拉按钮,文本框也有(就像 Excel 的 RefEdit 控件一样)。即使您在设计时无法访问文本框的下拉按钮,但您可以在运行时访问。使用文本框可以避免处理组合框的下拉列表。

    给定一个名为 TextBox1 的文本框,以下代码将提供所需的省略号下拉按钮:

    Private Sub UserForm_Initialize()
      With Me.TextBox1
        .DropButtonStyle = fmDropButtonStyleEllipsis
        .ShowDropButtonWhen = fmShowDropButtonWhenAlways
      End With
    End Sub
    

    然后使用文本框的 DropButtonClick 事件执行您想要的任何操作:

    Private Sub TextBox1_DropButtonClick()
      '' Code here to do what you need
    End Sub
    

    我在Alternative to Excel’s Flaky RefEdit Control 有一个广泛的示例,它使用带有“减少”下拉按钮的文本框来复制 Excel 不可靠的 RefEdit 控件的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多