2016-04-12 7 views
-1

Verwenden von Excel 2010 hier. Beginnend mit einem leeren Blatt, erstelle ich ein ActiveX-Kombinationsfeld.ComboBox _Click und _Change Ereignisse auslösen auf ListFillRange bearbeiten? (Excel VBA)

1) Öffnen Sie das Eigenschaftenfenster und setzen:

ListFillRange = "A1:A3" 

2) manuell jede Zelle in Bereich A1 füllen: A3 mit den Worten "eins", "zwei" und "drei", bzw. (diese Strings sind willkürlich).

3) Klicken Sie auf den Drop-down-Pfeil des Kombinationsfelds, um zu prüfen, ob die Werte in der Liste angezeigt werden.

4) aktivieren Design-Modus und doppelklicken Sie auf das Kombinationsfeld den VBA-Editor zu öffnen, dann fügen Sie den folgenden Code (das ist der Name Kombinationsfeld übernimmt, ist "ComboBox1"):

Private Sub ComboBox1_change() 
    MsgBox "Change event" 
End Sub 

Private Sub ComboBox1_click() 
    MsgBox "Click event" 
End Sub 

5) Kehren Sie zu dem Blatt zurück, das das Kombinationsfeld enthält, und deaktivieren Sie den Entwurfsmodus.

6) Klicken Sie auf die Drop-down-Schaltfläche des Kombinationsfelds und wählen Sie das oberste Element ("eins") aus der Liste aus. Unmittelbar nach dem Loslassen der Maustaste sollten Sie zwei MsgBox-Fenster erhalten, eines für das Ereignis _click und ein weiteres für das Ereignis _change, wie von den obigen Subs angewiesen.

7) mit „ein“ noch ausgewählt Doppelklick in eine der Zellen in ListFillRange (so zum Beispiel Zelle „A2“)

Ergebnis: Schritt 7 Triggern sowohl die _CLICK und _change Veranstaltungen! Dies geschieht immer dann, wenn ein Wert im Bereich ListFillRange bearbeitet wird AND die Zeichenfolge in der Combo-Box entspricht genau mindestens einem der Werte in ListFillRange.

Eine Idee, warum das sein könnte? Ist es ein Fehler? Danke im Voraus!

Antwort

0

Ich verwende ListFillRange nicht für ActiveX-Steuerelemente. Sie sollten wahrscheinlich vermeiden, diese zu verwenden. Wenn die Daten statisch sind, versuchen Sie, sie mit AddItem über Code aufzufüllen.

Verwandte Themen