2016-11-05 4 views
0

ich folgende habe Code in den Workbook_Open Ereignishandler:Clearing ComboBox auf 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 

Mein Problem ist, dass es nicht ComboBox1 auf Workbook_Open klart und zeigt zuvor ausgewählte Werte.

habe ich auch

folgende
 Sheet1.ComboBox1.ListIndex = -1 ' instead of sheet1.combobox1.clear 
    Sheet1.ComboBox2.ListIndex = -1 ' instead of sheet1.combobox2.clear 

Aber das Problem bleibt.

Kann jemand eine Lösung vorschlagen? Vielen Dank im Voraus an.

Antwort

0

Ich habe einige Korrekturen Sie den Code ein:

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 

Wenn ich einen Artikel in ComboBox und speichern Sie die Arbeitsmappe manuell hinzufügen, schließen Sie die Arbeitsmappe, dann die Arbeitsmappe erneut öffnen, dann kehrt die Liste zu einer deutlichen Liste von Sheet2.

Können Sie es versuchen?