标签:VBA,用户窗体
示例目标:在用户窗体中,当一个组合框中的值变化时,另一个组合框中的值相应变化,如下图1所示。
图1
在工作表中的示例数据如下图2所示。
图2
打开VBE,插入一个用户窗体,在其中放置两个组合框,保留默认的名称。然后,打开该用户窗体代码窗口,在其中输入下面的代码:
Private Sub UserForm_Initialize()
Dim r As Range
Set r = ActiveSheet.Cells(1, 1)
Set r = Range(r, r.End(xlDown))
Set r = r.Cells(2, 1).Resize(r.Rows.Count, 1)
Me.combobox1.RowSource = r.Address
End Sub
Private Sub combobox1_Change()
Dim i As Long
Dim r As Range
i = 0
On Error Resume Next
i = Application.WorksheetFunction.Match(Me.combobox1.Value, ActiveSheet.Rows(1), 0)
On Error GoTo 0
If i = 0 Then Exit Sub
Set r = ActiveSheet.Cells(1, i)
Set r = Range(r, r.End(xlDown))
Set r = r.Cells(2, 1).Resize(r.Rows.Count, 1)
With Me.Combobox2
.Value = ""
.RowSource = r.Address
End With
End Sub
这样,就完成了这两个组合框的关联。
注:本示例整理自vbaexpress.com,供有兴趣的朋友参考。