前面我们讲过,为解决组合框选择提示信息问题,我们是通过一个个项目添加和一个个删除完成组合框整体项目内容的设置和清除的,根据粉丝的反馈效果还是不错的,他们也相继收藏和转发了。
但是,我觉的还是不是很完美,从算法角度讲,增加了时间复杂度和空间复杂度,效率上我不是太完美。为此,我近两天自个儿琢磨了一阵子,想到了用一种很简单的方法更好解决这个问题。
究竟什么方法呢?不要着急哦,下面,我们开始慢慢给大家分享吧!
一、组合框呈现“选择提示”信息的有效事件方法
可以通过组组合框的“DropButtonClick”行为事件实现,可以参考我分享的以下代码实现
'只有用下面的'组合框上“倒三角DropButton”按钮的点击行为事件,才能真正意义上看到组合框内的“选择提示信息”和列表项的分离状态
Private Sub ComboBox1_DropButtonClick()
ComboBox1.List = Array(1, 2, 3) '用.List列表属性一次性重新设置ActiveX控件组合框内容
End Sub
二、选择内容后,组合框的“选择提示”信息再次呈现的技术技巧
(一)Excel前端里实现组合框的“选择提示”信息再次呈现的技术
可以用组合框内失去焦点事件“LostFocus”实现,代码参考如下
'当组合框内失去焦点后,调用Initialize_Combobox_Items过程恢复ActiveX控件组合框内容到初始化状态
Private Sub ComboBox1_LostFocus()
Initialize_Combobox_Items
End Sub
Sub Initialize_Combobox_Items() '初始化ActiveX控件组合框内容
Dim ctr As ComboBox '定义组合框对象
Set ctr = Sheets("Sheet1").ComboBox1
ctr.List = Array("-Select Number-", 1, 2, 3) '用.List列表属性一次性设置ActiveX控件组合框内容
ctr.ListIndex = 0 '将组合框内显示的内容指定为列表索引号 0 号(即第一个列表元素)
End Sub
(二)Excel后台窗体里组合框的“选择提示”信息再次呈现的技术
在窗体里的组合框没有失去焦点事件,但是我们可以运用窗体的“Click”事件实现组合框的“选择提示”信息再次呈现,代码参考如下
Private Sub UserForm_Click()
Initialize_Two_Comboboxies_Items '调用Initialize_Two_Comboboxies_Items过程两个组合框列表项目内容初始化
End Sub
Private Sub ComboBox1_DropButtonClick()
Me.ComboBox1.List = Array(1, 2, 3)
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.Value <> "-Select Number-" Then '只有选择的内容“-Select Number-”不为时,才执行显示消息
MsgBox "You selected number“" & ComboBox1.Value & "”", vbInformation, "提示"
End If
End Sub
Private Sub ComboBox2_DropButtonClick()
Me.ComboBox2.List = Array("Male", "Female", "Unknow")
End Sub
Private Sub ComboBox2_Change()
If ComboBox2.Value <> "-Select Sex-" Then '只有选择的内容“-Select Sex-”不为时,才执行显示消息
MsgBox "You selected sex“" & ComboBox2.Value & "”", vbInformation, "提示"
End If
End Sub
Sub Initialize_Two_Comboboxies_Items() '初始化两个ActiveX控件组合框内容
Dim ctr As ComboBox '定义组合框对象
Set ctr = Me.ComboBox1
ctr.List = Array("-Select Number-", 1, 2, 3) '用.List列表属性一次性设置ActiveX控件组合框内容
ctr.ListIndex = 0 '将组合框内显示的内容指定为列表索引号 0 号(即第一个列表元素)
Me.ComboBox1.Style = fmStyleDropDownList '组合框内容只能选择不能输入
Set ctr = Me.ComboBox2
ctr.List = Array("-Select Sex-", "Male", "Female", "Unknow") '用.List列表属性一次性设置ActiveX控件组合框内容
ctr.ListIndex = 0 '将组合框内显示的内容指定为列表索引号 0 号(即第一个列表元素)
Me.ComboBox2.Style = fmStyleDropDownList '组合框内容只能选择不能输入
End Sub
三、效果测试
(一)Excel前端里测试的效果
点击组合框下拉“倒三角”按钮后,可以看到组合框内仍然有选择提示信息,但列表没没有选择提示信息。如下图所示
图1 点击下拉按钮后组合框内有选择提示列表内没有选择提示
进行列表框里项目选择后,组合框内将呈现选择的列表项。如下图所示
图2 选择的结果
当离开组合框(组合框失去焦点后)点击其他地方,组合框将恢复呈现“选择提示”信息。如下图所示
图3 组合框失去焦点后“选择提示”的再次呈现
(二)Excel后台窗体上测试的效果
点击前端的按钮<调用两个组合框“选择提示信息”操作展示>调出窗体“两个组合框“选择提示信息”操作展示”。如下图所示
图4 调出的“两个组合框“选择提示信息”操作展示”窗体
点击窗体上任何一个组合框的下拉“倒三角”按钮,将出现组合框内仍然有选择提示信息,但列表没没有选择提示信息。如下图所示
图5 点击窗体上组合框下拉“倒三角”按钮的效果
进行列表框里项目选择后,组合框内将呈现选择的列表项并且伴随有消息框显示选择的结果提示。如下图所示
图6 选择的结果
当离开组合框(组合框失去焦点后)点击窗体上其他地方,组合框将恢复呈现“选择提示”信息。如下图所示
图7 组合框失去焦点后点击窗体其他地方“选择提示”的再次呈现
四、技术技巧小结
(一)充分利用组合框的.list属性可以一次性为组合框项目内容赋值,语句格式为 Combobox1.list=列表数组名
或Combobox1.list=Array(item1,item2,……)
(二)在Excel前端的组合框可用其失去焦点事件方法组合框的“选择提示”信息再次呈现
(三)在Excel后台窗体上的组合框可用窗体的Click事件方法解决组合框的“选择提示”信息
至于在Word、PowerPoint中的实现,方法和在Excel中类似,这里就不再赘述了,各位可以通过多种渠道去探究吧,当然,也可以私信我哈。
好了,本期作品就给大家分享到这里吧,愿本期的组合框内容用.list属性一次性填充赋值及其选择信息提示能给各位工作带来帮助。请带着我分享的技术好好打造你们的漂亮、更加友好交互的下拉组合框吧!
最后,还是非常感谢各位粉丝的长期关注(头条号:跟我学Office高级办公)、推广和点评哦!谢谢大家!