我在Workbook_Open
事件处理程序中有以下代码:
Sheet1.ComboBox1.Clear
Sheet1.ComboBox2.Clear
Set Rng = Sheet2.Range("A3", Sheet2.Cells(Rows.Count, "A").End(xlUp))
With CreateObject("Scripting.Dictionary")
For Each cel In Rng
If Not .exists(cel.Value) Then
.Add cel.Value, Nothing
End If
Sheet1.ComboBox1.List = .keys
我的问题是它没有在ComboBox1
上清除Workbook_Open
并显示之前选择的值。
我也使用了以下
Sheet1.ComboBox1.ListIndex = -1 ' instead of sheet1.combobox1.clear
Sheet1.ComboBox2.ListIndex = -1 ' instead of sheet1.combobox2.clear
但问题仍然存在。
有人可以提出解决方案吗?在此先感谢。
答案 0 :(得分:0)
我对你的代码做了一些更正:
Option Explicit
Private Sub Workbook_Open()
Dim Rng As Range
Dim cel As Range
Sheet1.ComboBox1.Clear
Sheet1.ComboBox2.Clear
Set Rng = Sheet2.Range("A3", Sheet2.Cells(Rows.Count, "A").End(xlUp))
With CreateObject("Scripting.Dictionary")
For Each cel In Rng
If Not .exists(cel.Value) Then
.Add cel.Value, Nothing
End If
Next cel
Sheet1.ComboBox1.List = .keys
End With
End Sub
如果我手动将项目添加到ComboBox
并保存工作簿,请关闭工作簿,然后重新打开工作簿,然后列表将从Sheet2
恢复为不同的列表。
你能试试吗?