Управление свойствами ActiveX в VBA - PullRequest
0 голосов
/ 20 июня 2019

Я хочу управлять свойствами ActiveX многих элементов управления ActiveX на рабочем листе (например, image1.picture или другими подобными свойствами).

Возможно ли это с помощью кода Excel VBA с использованием OLEobjects или Shapes или любого другого объекта, который принимает имя переменной в коде, чтобы это имя переменной можно было изменить с помощью цикла For, последовательно реплицируя все имена ActiveX Элементы управления, которые я хочу отформатировать?

Я пытаюсь назначить свойства элементам управления Activex на листе, используя код VBA. Элементы управления ActiveX представляют собой множество меток и изображений на листе и имеют последовательные имена (т. Е. Image1, Image2, ..., Label1, Label2 и т. Д.).

Я хотел бы использовать цикл For (для i = от 1 до n), чтобы я мог назначать конкретные свойства для каждого изображения (i) и метки (i) в контрольном листе в соответствии с конкретным индексом (i).

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

With ActiveSheet.oleobjects(variable_name)
    .Width = variable_width               <----- OK, this works
    .Height = variable_height             <----- OK, this works
    .BackStyle = fmBackStyleTransparent   <----- Doesn't work
    .BorderStyle = fmBorderStyleNone      <----- Doesn't work
    .Picture = LoadPicture(path_filename) <----- Doesn't work
End With

.Backstyle, .Borderstyle и .Picture не поддерживаются, и сообщение об ошибке

«Ошибка времени выполнения 438: объект не поддерживает это свойство»

Как я могу управлять этими свойствами с помощью объекта, имя которого может быть выражено с помощью переменной (имя_переменной), что позволяет назначать свойства стольких элементов управления ActiveX на листе только с помощью цикла For, избегая ввода всех их имена в коде VBA?

1 Ответ

0 голосов
/ 22 июня 2019

Те свойства, которые вы устанавливаете, не относятся непосредственно к OLEobject, но к его Object свойству:

With ActiveSheet.oleobjects(variable_name)
    .Width = variable_width               
    .Height = variable_height             
    .Object.BackStyle = fmBackStyleTransparent   
    .Object.BorderStyle = fmBorderStyleNone     
    .Object.Picture = LoadPicture(path_filename) 
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...