2015-12-23 1 views
1

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

Format Object dialogue box

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

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's Article on OLE Object Properties, однако, похоже, нет ничего, что могло бы решить то, что мне нужно.

ответ

1

Aha ..! Намного больше поиска и я нашел ответ на мой собственный вопрос:

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

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

Смежные вопросы