用于VBA用户表单文件的省略号文本框选择

时间:2015-11-24 17:00:55

标签: excel vba excel-vba userform

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

ellipsis_textbox_example

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

非常感谢任何解决方案。

2 个答案:

答案 0 :(得分:3)

  

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

您的建议 工作,并且它确实比让两个控件协同工作({1}}更简单,更优雅。

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

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

Button + Textbox

最后,通过设置设计时属性,只有在输入组合时才显示省略号:

         DropButtonStyle = fmDropButtonStyleEllipsis

2)如果需要,您可以设置其他设计时属性以具有一些外观。但默认情况看起来不错。

3)将以下处理程序添加到父用户窗体。代码片段模拟启动对话框并获取新值或取消。它不会显示任何下拉窗口。 (但你仍然可以控制:如果你想根据某些条件显示它,你仍然可以调用方法 ShowDropButtonWhen = ShowDropButtonWhenFocus

ComboBox1.DropDown

试试吧;)

答案 1 :(得分:0)

ComboBox不仅有Drop Button,TextBox也是如此(Excel的RefEdit控件也是如此)。即使您无法在设计时访问Textbox的Drop Button,也可以在运行时执行此操作。使用文本框可以避免必须处理组合框的下拉列表。

给定一个名为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有一个广泛的例子,它使用带有“Reduce”下拉按钮的文本框来复制Excel不可靠的RefEdit控件的功能。