标签:VBA,用户窗体
在用户窗体中,当用户选择组合框中某项目时,该项目内容输入到相应的文本框中。
如下图1所示,当选择左侧组织合框下拉列表中的某项目后,其右侧文本框中显示该项目。
图1
在VBE中,插入一个类模块,将其重命名为“CComboboxes”。在该类模块中,输入代码:
Private WithEvents myCB As MSForms.ComboBox
Private myIndex As Long
Public Sub New_CB(CB As MSForms.ComboBox, CBIndex As Long)
Set myCB = CB
myIndex = CBIndex
End Sub
Private Sub myCB_Change()
UserForm1.Controls("textbox" & myIndex).Value = ""
End Sub
Private Sub myCB_Click()
UserForm1.Controls("textbox" & myIndex).Value = ""
With UserForm1.Controls("combobox" & myIndex)
If .ListIndex > -1 Then
UserForm1.Controls("textbox" & myIndex).Value = _
Sheets("myData").Cells(.ListIndex + 1, "A").Text
End If
End With
End Sub
注意,代码中“myData”中存放组织框下拉列表数据的工作表,字母A代表数据存放在工作表列A。
然后,插入用户窗体,在其中绘制组合框和文本框,使用默认的名称。双击打开用户窗体代码模块,输入代码:
Private CB(1 To 10) As New CComboboxes
Private Sub UserForm_Initialize()
Dim i As Long
Dim wks As Worksheet
Set wks = Sheets("myData")
For i = 1 To 10
CB(i).New_CB Me.Controls("ComboBox" & i), i
Me.Controls("ComboBox" & i).List = wks.Range("A1", wks.[A10000].End(xlUp)).Value
Me.Controls("ComboBox" & i).ListIndex = -1
Me.Controls("textbox" & i).Text = ""
Next
End Sub
注意,示例使用了10个组合框和10个对应的文本框。