2016-08-08 4 views
0

Ich habe Probleme, eine List-Box in VBA zu arbeiten. Ich bin mir nicht sicher, welchen Schritt ich vermisse. Ich habe eine Listbox namens ListBox1 erstellt.Listbox AddItem Fehler

Ich schrieb das Programm wie folgt:

Sub ListBox1_Change() 
    Dim ListBox As Object 

    With Listbox1 
     .AddItem = "Yes" 
     .AddItem = "No" 
    End With 
End Sub 

Das Programm scheitert an der .AddItem = "No" Linie. Ich bekomme Object Variable or With Block Variable not set Fehler.

+1

Sie nie zu einer tatsächlichen listbox Objekt Ihrer listbox Variable gesetzt. Wenn Sie nur "Mit Listbox1" verwenden, muss Listbox1 auf dem aktiven Blatt oder Benutzerformular sein, auf dem der Code aktiviert ist. Wenn sich der Code in einem Standardmodul befindet, müssen Sie das Blatt oder Benutzerformular angeben, das das Listenfeld enthält: 'Mit Blättern (" Sheet1 "). Listbox1' oder' Mit UserForm1.Listbox1' – tigeravatar

+0

Außerdem gibt es kein '=' Zeichen Bei Verwendung der Methode '.Additem' – tigeravatar

+0

fügt das Änderungsereignis Elemente zu sich selbst hinzu, wodurch ein neues Änderungsereignis aktiviert wird. Sie müssen eine boolesche Bedingung mit einer globalen Variable hinzufügen, die Ereignisse blockiert. –

Antwort

1

Nicht sicher, warum Sie Elemente in derselben Listbox im Änderungsereignis hinzufügen. In Ihrem Code ist jedoch ein Syntaxfehler aufgetreten. Es gibt keine =, wenn Sie ein Element zur Listbox hinzufügen. Sieh dir das an.

With Listbox1 
    .AddItem "Yes" 
    .AddItem "No" 
End With 

Entfernen Sie auch die Linie Dim ListBox as Object. Du brauchst es nicht.

Wenn Sie es an einen anderen listbox hinzufügen planen dann denke ich, Sie brauchen diese

Sub ListBox1_Change() 
    With ListBox2 '<~~ Replace this with the other listbox name 
     .AddItem "Yes" 
     .AddItem "No" 
    End With 
End Sub 
+0

Vielen Dank für Ihre hilfreiche Antwort! Ich habe das Gleichheitszeichen entfernt. Ich habe es auch mit dem korrekten Arbeitsblatt referenziert und Dim-Anweisung losgeworden. Ich habe mich überlegt, wie ich den Code für das Form vs Active X schreiben soll, aber ich denke, ich habe es jetzt herausgefunden. Ich sehe, man hat einen Ausgang, d.h. 1,2,3. Nachdem ich es ein wenig optimiert habe, finde ich, dass ich die Active X-Steuerung lieber mag. Danke noch einmal! – Tanye77