Die Variable obj ist in deinem Beispiel ja nicht wirklich global
Das wäre sie wenn sie in einem STANDARDmodul deklariert wäre und dann auch mit
Public obj as Object
Ob es daran liegt sei dahingestellt.
Die Variable obj ist in deinem Beispiel ja nicht wirklich global
Das wäre sie wenn sie in einem STANDARDmodul deklariert wäre und dann auch mit
Public obj as Object
Ob es daran liegt sei dahingestellt.
Sorry, Du hast natürlich (eingeschränkt) Recht. Sie ist zwar global aber der Sichtbarkeitsbereich ist natürlich eingeschränkt auf das Sheet. Ich habe das allerdings auch schon in einem Modul probiert und hatte dort den gleichen Effekt.
Trotzdem Danke!
Ich scheitere seit einigen Tagen an der Lösung des folgenden Problems:
-----------------------------------------------------------
Option Explicit
Dim obj As Object
Private Sub REM_Worksheet_SelectionChange(ByVal Target As Range)
If Not obj Is Nothing Then
obj.Delete
Set obj = Nothing
ActiveSheet.Range("A1").Value = "obj deleted"
Else
ActiveSheet.Range("A1").Value = "obj not found"
End If
Set obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=ActiveCell.Left, Top:=ActiveCell.Top, Width:=ActiveCell.Width, Height:=ActiveCell.Height)
' Set obj = ActiveSheet.DropDowns.Add(Left:=ActiveCell.Left, Top:=ActiveCell.Top, Width:=ActiveCell.Width, Height:=ActiveCell.Height)
End Sub
----------------------------------------------------------
Nach verschiedenen Tests habe ich festgestellt, dass bei der Ausführung des Codes beim Eintritt in eine belibige andere Funktion die gesamten globalen Variablen zurückgesetzt werden. Die Generierung des OLEObjectes funktioniert dabei noch sehr gut. Die globale Variable, die das Objekt hält ist nach der Generierung auch vorhanden (d.h. nach dem Verlassen der Funktion). Allerdings werden beim Aufrufen einer belibigen anderen Funktion alle globalen Variablen und damit auch das Objekt selbst zurückgesetzt und ich habe keine Ahnung, warum! Nachweisbar ist das allerdings nur dadurch, dass man zu Testzwecken eine weiter globale Variable erzeugt und diese überwacht. Wenn ich allerdings das OLEObject durch ein belibiges anderes (im Beispiel auskommentiertes DropDown z.B.) ersetze, dann klappt alls hervorragend.
Selbstredend benötige ich in einem größeren Projekt globale Variablen noch an anderen Stellen so dass mir diverse Workarounds (z.B. referenzierung über einen speziellen Objektnamen) nicht weiterhelfen!
Ich würde mich sehr freuen, wenn mir jemand bei diesem Problem weiterhelfen könnte. Danke im Voraus!
Gruß,
Hartmut