我有以下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
中的列表?
答案 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