jay*_*pes 5 excel vba excel-vba userform
我正在尝试为我一直在研究的广泛的VBA程序创建路径选择用户界面,但我似乎无法获得我想要的省略号文本框.这是一个非常常见的功能,尤其是在选项表中.这是我想要获得的一个例子,直接来自VBA选项面板:
我很乐意找到一种在Userform中获得相同功能的方法.到目前为止,我发现的唯一解决方案是使用一个启用了省略号箭头选项的组合框.但是,似乎没有一种明显的方法可以使用组合框箭头的激活来运行对话框,也似乎没有办法让它看起来像一个组合框.最后,我在文本框下方使用了一个按钮,但我真的更喜欢这样做的一种不那么笨重的方式.
任何解决方案将不胜感激.
到目前为止,我找到的唯一解决方案是使用启用了省略号箭头选项的组合框。但是,似乎没有一种明显的方法可以使用组合框箭头的激活来运行对话框,也似乎没有一种方法可以使其看起来不像组合框
您的建议确实有效,而且它肯定比让两个控件一起工作更简单、更优雅Button + Textbox
。
Combo 可以通过以下方式完美地实现所需的功能。
1)在设计模式下,将按钮样式设置为省略号
DropButtonStyle = fmDropButtonStyleEllipsis
Run Code Online (Sandbox Code Playgroud)
最后,通过设置设计时属性,使省略号仅在输入组合时显示:
ShowDropButtonWhen = ShowDropButtonWhenFocus
Run Code Online (Sandbox Code Playgroud)
2)如果需要,您可以设置其他设计时属性以获得一些外观和感觉。不过,默认值看起来相当不错。
3) 将以下处理程序添加到父用户窗体。该代码片段模拟启动对话框并获取新值或取消。它不显示任何下拉窗口。(但你仍然可以控制它:如果你想根据某种条件显示它,你仍然可以调用该方法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
Run Code Online (Sandbox Code Playgroud)
尝试一下 ;)
归档时间: |
|
查看次数: |
880 次 |
最近记录: |