Mein Code durchläuft alle vorhandenen OLEObjects innerhalb des aktuellen Arbeitsblatts in einer Excel-Arbeitsmappe. Ich möchte, dass es eine bestimmte (basierend auf dem Namen an den Sub), der immer ist, eine CheckBox finden und es einer Variablen vom Typ CheckBox zuweisen.VBA: Weisen Sie einer CheckBox-Variablen ein generisches OLEObject zu
Hinweis: Die anderen Objekte sind nicht alle Checkboxen, daher der generische OLEObject-Typ.
Beispiel-Code, der Unter nennt, Beispiel Name zeigt:
HandleCheckBoxClick("chkAddSummary")
Unter die für dieses spezielle Objekt sieht:
Sub HandleCheckBoxClick(nm As String)
Dim o As OLEObject
Dim cb As CheckBox
For Each o In Me.OLEObjects
If o.name = nm Then
Set cb = o
End If
Next o
End Sub
ich eine sehr ähnliche Frage gefunden: Excel VBA: how to cast a generic control object into a ComboBox object? aber es bezieht sich Formularsteuerelemente (nicht ActiveX-Steuerelemente). Ich versuchte die Methode, die in der Antwort gegeben wurde, um zu sehen, ob es zwischen den zwei Kontrolltypen übertragbar war, hatte aber keinen Erfolg.
Der Grund, warum ich dies tun möchte, ist ähnlich dem Fragesteller der Frage, die ich verweise - ich kann Methoden wie CheckBox.Value nicht mit einer generischen OLEObject-Variable verwenden.
Ich habe auch versucht, die OLEObject.progID-Methode zu verwenden, um sicherzustellen, o
ist ein Checkbox-Objekt. Der Fehler, den ich bekomme, wenn ich versuche, Set cb = o
ist eine Art Mismatch.