VBA实战技巧25:巧用文本框和列表框

2021-07-12 16:10:11 浏览数 (3)

如下图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

0 人点赞