Мой код проходит через все существующие OLEObjects в текущем листе в книге Excel. Я хочу, чтобы он нашел конкретный (на основе имени, переданного суб), который всегда CheckBox и назначил его переменной типа CheckBox.VBA: Назначить общий OLEObject переменной CheckBox
Примечание: другие объекты не все флажки, следовательно, общий тип OLEObject.
Пример кода, который вызывает к югу, показывая пример имени:
HandleCheckBoxClick("chkAddSummary")
Sub, который выглядит для этого конкретного объекта:
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
я нашел очень похожий вопрос на: Excel VBA: how to cast a generic control object into a ComboBox object? но он относится для создания элементов управления (а не элементов управления ActiveX). Я попробовал метод, указанный в ответе, чтобы узнать, может ли он передаваться между двумя типами управления, но не имел успеха.
Причина, по которой я хочу это сделать, похожа на вопрос, на который я ссылаюсь, - я не могу использовать такие методы, как CheckBox.Value, с общей переменной OLEObject.
Я также попытался использовать метод OLEObject.progID, чтобы убедиться, что o
является объектом checkbox. Ошибка, которую я получаю при попытке Set cb = o
, является несоответствием типа.