Mon code parcourt tous les OLEObjects existants dans la feuille actuelle d'un classeur Excel. Je veux qu'il trouve un spécifique (basé sur le nom passé au sous) qui est toujours un CheckBox et l'assigner à une variable de type CheckBox.VBA: Attribution d'un OLEObject générique à une variable CheckBox
Remarque: Les autres objets ne sont pas tous des cases à cocher, d'où le type générique OLEObject.
code exemple qui appelle sous, montrant par exemple du nom:
HandleCheckBoxClick("chkAddSummary")
Sub qui recherche cet objet spécifique:
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
Je trouve à une question similaire: Excel VBA: how to cast a generic control object into a ComboBox object? mais il fait référence pour former des contrôles (pas de contrôles ActiveX). J'ai essayé la méthode donnée dans la réponse pour voir si elle était transférable entre les deux types de contrôle mais sans succès.
La raison pour laquelle je veux faire cela est similaire au demandeur de la question à laquelle je me réfère - Je ne peux pas utiliser des méthodes comme CheckBox.Value avec une variable générique OLEObject.
J'ai également essayé d'utiliser la méthode OLEObject.progID pour m'assurer que o
est un objet case à cocher. L'erreur que j'obtiens en essayant de Set cb = o
est une incompatibilité de type.