2016-11-05 5 views
0

У меня следующий код в обработчик события Workbook_Open:Клиринговый ComboBox на 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

Я сделал некоторые исправления к вам код:

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.

Вы можете попробовать?

Смежные вопросы