根据ComboBox1中的选定值更改ComboBox2中的列表

时间:2018-07-13 08:51:45

标签: excel vba excel-vba

我有以下Excel电子表格:

              A                        B                               
1       Filter Selected 1       Filter Selected 2
2       Product A
3 
4       List of ComboBox1       List of ComboBox2
5       Product A               Brand A  =IF($A$2=$A$5,"Brand A","Brand B")
6       Product B               Brand A  =IF($A$2=$A$5,"Brand A","Brand B")
7       Product C               Brand A  =IF($A$2=$A$5,"Brand A","Brand B")
8

在A5:A7范围内,您可以在UserForm的ComboBox1中找到我使用的列表。在范围B5:B7中,您可以在用户窗体的ComboBox2中找到我使用的列表。用户在其中一个组合框中选择一个值后,它将被键入到单元格A2或单元格B2中。

您可以看到ComboBox2的列表,我根据IF的选择使用了ComboBox1条件,因此,如果用户在{{1 }}范围B5:B7中的列表将更改为Product A
但是,此更改不会立即转移到CombobBox1,因此除非我重新打开UserForm,否则它仍会显示Brand A而不是ComboBox2

我的用户窗体的代码为:

Brand A

此代码中我需要更改什么,以便在Brand B中选择一个值后立即更新Sub UserForm_Activate() ComboBox1.List = Sheet1.Range("A5:A7").Value ComboBox2.List = Sheet1.Range("B5:B7").Value ComboBox1.Value = Sheet1.Range("A2") ComboBox2.Value = Sheet1.Range("B2") End Sub Sub ComboBox1_Change() Sheet1.Range("A2").Value = ComboBox1.Value End Sub Sub ComboBox2_Change() Sheet1.Range("B2").Value = ComboBox2.Value End Sub Sub UserForm_Close() Unload UserForm1 End Sub 中的列表?

1 个答案:

答案 0 :(得分:1)

ComboBox1_Change事件中,尝试计算工作表以确保在重新加载ComboBox2中的列表之前已更新公式中的值。

Sub ComboBox1_Change()
    Sheet1.Range("A2").Value = ComboBox1.Value
    Sheet1.Calculate 'update formula values
    ComboBox2.List = Sheet1.Range("B5:B7").Value 'reload the values into the list
End Sub