VBA实战技巧25:巧用文本框和列表框
excelperfect
如下图1所示,在用户窗体界面上实际放置着一个文本框和一个列表框,当单击文本框右侧的下拉按钮时,会出现一个列表框,你可以从中选择数据项并将其输入到文本框中。

图1
也就是说,通过编写代码组合了文本框和列表框,使文本框看起来像组合框的外观。因为无法在文本框的属性窗口中设置DropButtonStyle和ShowDropButtonWhen属性,因此必须在运行时进行设置。
在VBE中,插入一个用户窗体,在其中添加一个名为TextBox1的文本框。然后,在用户窗体代码模块,输入下面的代码:
Private WithEvents mobjListBox As MSForms.ListBox
Private Sub UserForm_Initialize()
TextBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways
End Sub
Private Sub TextBox1_DropButtonClick()
If mobjListBox Is Nothing Then
Set mobjListBox = Controls.Add('Forms.ListBox.1')
With mobjListBox
.Top = TextBox1.Top + TextBox1.Height
.Left = TextBox1.Left
.Width = TextBox1.Width
.SpecialEffect = fmSpecialEffectFlat
.BorderStyle = fmBorderStyleSingle
With .Font
.Size = TextBox1.Font.Size
.Name = TextBox1.Font.Name
End With
.AddItem 'a'
.AddItem 'b'
.AddItem 'c'
.AddItem 'd'
.AddItem 'e'
.AddItem 'f'
.AddItem 'g'
EndWith
Else
mobjListBox.Visible = Not mobjListBox.Visible
End If
End Sub
Private Sub mobjListBox_Change()
TextBox1.Text = mobjListBox.List(mobjListBox.ListIndex)
mobjListBox.Visible = False
End Sub
运行用户窗体,就可以看到上图1所示的效果了。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。