Как сделать так, чтобы элемент управления OptionButton ActiveX менял цвет фона на прозрачный? - PullRequest
2 голосов
/ 11 марта 2019

Я добавил несколько кнопок управления Excel ActiveX на лист, и мне нужно изменить цвет фона на прозрачный. Я использовал следующий код, но он не работает.

Sub removecolor()
    Dim cb As OptionButton
    For Each cb In ActiveSheet.OptionButton
        cb.Interior.ColorIndex = xlNone
    Next cb
End Sub

Не могли бы вы дать мне подсказку?

1 Ответ

2 голосов
/ 11 марта 2019

Есть две точки, о которых вы должны знать, чтобы сделать эту работу:

  1. Чтобы получить доступ к элементам управления OptionButton на листе, необходимо выполнить итерацию его коллекции OLEObjects.

  2. Элемент управления ActiveX не имеет свойства Interior.ColorIndex.Однако он имеет свойства BackColor и BackStyle.Вы должны использовать BackStyle в этом случае, чтобы сделать элемент управления прозрачным.

Это должно работать:

Sub RemoveColor()
    For Each obj In ActiveSheet.OLEObjects
        If TypeName(obj.Object) = "OptionButton" Then
            obj.Object.BackStyle = fmBackStyleTransparent
        End If
    Next
End Sub

Если вам не нравится предоставлятьимя типа в виде строки, вы можете заменить условие на:

If TypeOf obj.Object Is MSForms.OptionButton Then   ' etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...