Удалить границу из OLEObject на листе в Excel с помощью VBA

Я использую VBA для создания листа Excel, который включает элементы управления формы ActiveX. Однако документация, доступная для свойств объекта, довольно отрывочна. Я заметил, что когда я создаю, например, элемент управления OptionButton, объект включает сплошную белую рамку. Я могу вручную перейти в режим дизайна; щелкните правой кнопкой мыши; «Формат объекта», затем на вкладке «Цвета и линии» в диалоговом окне измените «Заливка (автоматическая)» на «Без заливки». См. следующий пример:

Диалоговое окно

Однако мне еще предстоит выяснить, как это сделать с помощью кода. См. следующее:

Dim sht as Sheet
Set sht = [WorkbookObject].Sheets(1)
With sht
    .OLEObjects.Add(ClassType:="Forms.OptionButton.1", Left:=4.5, Top:=34.5, Width:=105, Height:=15).Name = "RadioB_1"
    With .OLEObjects("RadioB_1").Object
        .Caption = "First Option"
        .GroupName = "ColumnFilter"
        .BackColor = RGB (128, 128, 128)
        .BackStyle = 1
    End With
    ' The above all works fine, however I can't find the correct property
    ' for the border fill. I have tried various properties for
    ' .OLEObjects("RadioB_1") and for .OLEObjects("RadioB_1").Object
    ' however I can't find the correct property.
End With

Браузер объектов Excel не дает мне большой подсказки.

Я также просмотрел Статья MSDN о свойствах объекта OLE, однако, похоже, нет ничего, что могло бы мне помочь.


person Chris Melville    schedule 23.12.2015    source источник


Ответы (1)


Ага..! Много поискал и нашел ответ на свой вопрос:

sht.OLEObjects("RadioB_1").ShapeRange.Fill.Transparency = 1

ShapeRange был указан на этой странице MS, однако его название вводит в заблуждение, и в официальной документации до сих пор нет ни одного фактического списка всех свойств и того, что они делают! В любом случае - я решил опубликовать ответ на свой вопрос для всех, кто ищет это в будущем.

person Chris Melville    schedule 23.12.2015