Wie um zu verhindern, dass ActiveX-Ereignisse auslösen in VBA?

Ich bin auf der Suche nach einem besseren Weg zum deaktivieren von ActiveX-Ereignisse auslösen, die in einer Excel-Arbeitsmappe (obwohl dies gilt für alle Office-Anwendungen mit ActiveX-Objekte).

Hoffentlich etwas ähnliches wie Application.EnableEvents = false, aber das funktioniert nicht mit ActiveX.

In dem Beispiel weiter unten ist es trivial, um eine Globale boolean-aber ich habe eine Menge von event-Handlern für meine ActiveX-Objekte, und es wäre immens einfacher, für etwas, das ich universell anwenden, um vorübergehend deaktivieren Sie die ActiveX-Ereignisse. Ich nicht wirklich wollen, fügen Sie eine if - /exit-sub-Anweisung für jede einzelne dieser Methoden.

Um dieses problem zu demonstrieren, erstellen Sie ein ActiveX-combobox in einem Arbeitsblatt und fügen Sie den folgenden, um das Blatt-Modul

Public initializingContent As Boolean 
Private Sub intializeAllActiveXContent()

    'this doesn't apply to activeX events :'(
    Application.EnableEvents = False

    'this could work but is not really elegant
    'change this to false to show my problem in 
    'the intermediate window (called not once but twice)
    initializingContent = True

    ComboBoxTest.Clear

    ComboBoxTest.AddItem ("item1")
    ComboBoxTest.AddItem ("item2")
    ComboBoxTest.AddItem ("item3")

    'select the top value in the box
    ComboBoxTest.value = "item1"

    initializingContent = False

    Application.EnableEvents = True

     End Sub

Private Sub ComboBoxTest_Change()
    'I really don't want to have to wrap EVERY single ActiveX method
    'with something like this for a whole variety of reasons...
    If initializingContent Then Exit Sub

    Debug.Print "do stuff I don't want to happen when intializeAllActiveXContent() runs " & _
        "but I do when user changes box"
         End Sub
  • + 1 Gute Frage! Sie hatte mir überlegt eine Weile 🙂
  • Mein code ist ein Beispiel für Excel. Die Logik bleibt die gleiche für MS Word/PowerPoint. Nicht sicher über MS Access/Projekt/Ausblick obwohl.
InformationsquelleAutor enderland | 2013-10-09
Schreibe einen Kommentar