如下图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所示的效果了。
undefined