Frage : VBA alte Gegenstandverpackung

Hallo, das

I morgens versuchend, einen ALTEN Gegenstand in ein Kategorie (wie kann ich meine eigenen Ereignisse etc. hinzufügen),
Unfortunately, scheint es einzuwickeln, nur zu arbeiten, wenn der ALTE Gegenstand manuell created.

If ist, das es in meiner Kategorie verursacht, oder sogar im Makro, das den Gegenstand benutzen, es vom Bereich am Ende des Makro erlischt und den Endpunkt meines einwickelngegenstandes verursacht, selbst wenn mein Gegenstand ein globale variable.

The folgende Erscheinen dieser Punkt ist:

class Modul benannte Obj:

Private p_oleCtl als OLEObject
Property gesetztes ActiveXControl (ByVal oleCtl als OLEObject)
gesetztes p_oleCtl = oleCtl
End Property
Property erhalten ActiveXControl () während OLEObject
gesetztes ActiveXControl = p_oleCtl
End Property
Private VorClass_Terminate ()
MsgBox „Ende "
End Sub

Regular Modul:

Dim GlobalObj als Obj
Sub CreateButton ()
Call ActiveSheet.OLEObjects.Add (ClassType: = " Forms.CommandButton.1“)
End Sub

Sub Test ()
Call CreateButton
Set GlobalObj = neues Obj
Set GlobalObj.ActiveXControl = ActiveSheet.OLEObjects (1)
End Sub

when Test, ist das msgbox „Ende“ displaid.
It ist nicht displaid, wenn ich CreateButton zuerst laufen lasse und dann prüfe (ohne den Anruf zu CreateButton).

Strangely genug, die gleiche Ausgabe auftritt he, selbst wenn der eingewickelte ALTE Gegenstand ein globaler variable.

Any Anhaltspunkt ist hinsichtlich, warum dieser wie der ist und wie man um es arbeitet?

Many Thanks

Antwort : VBA alte Gegenstandverpackung

Indem Sie einen Activex-Gegenstand addieren, lösen Sie effektiv ein Codezurückstellen aus (weil sie Teil des vbproject werden). Wenn Sie wirklich dies tun müssen, würde ich vorschlagen, ein OnTime Makro zu verwenden, um die Variable zuzuweisen, nachdem Sie sie verursacht haben.
Weitere Lösungen  
 
programming4us programming4us