VBA и Exel, OLEObjects, Создание Combobox, CheckBox на рабочем листе
Формулировка задачи:
Я пишу макросы в VB и необходимо создать ряд объектов (CheckBox'ов и ComboBox'ов) на рабочем листе Worksheets. В данный момент я пришел к выводу использовать OLEObjects, но возникли следующие приблемы:
1. Правильно ли я сделал выбор? Можно ли избежать использование OLEObject, но так, чтобы пользователям был запрещено удаление этих объектов (покрайней-мере в Exele OLEObject можно удалить, только запустив режим "Редактирование элементов управления" )
2. Как добавить элементы в OLEObject Combobox?
3. Как прикрепить OLEObject к определенной ячейки рабочего листа, т.е. чтобы я при написании макроса писал не координаты рабочей области, а индификатор ячейки?
4. Для того, чтобы удалять объекты - я сделал счетчик, который запоминает количество созданных объектов...(объекты создаются программно) Ясно, что если по каким то причинам было создано больше объектов, то некоторые объекты, которые не были учтены счетчиком, не удалились. С помощью какой процедуры можно проверять создан ли тот или иной объект или нет?
1. Правильно ли я сделал выбор? Можно ли избежать использование OLEObject, но так, чтобы пользователям был запрещено удаление этих объектов (покрайней-мере в Exele OLEObject можно удалить, только запустив режим "Редактирование элементов управления" )
2. Как добавить элементы в OLEObject Combobox?
3. Как прикрепить OLEObject к определенной ячейки рабочего листа, т.е. чтобы я при написании макроса писал не координаты рабочей области, а индификатор ячейки?
4. Для того, чтобы удалять объекты - я сделал счетчик, который запоминает количество созданных объектов...(объекты создаются программно) Ясно, что если по каким то причинам было создано больше объектов, то некоторые объекты, которые не были учтены счетчиком, не удалились. С помощью какой процедуры можно проверять создан ли тот или иной объект или нет?
Решение задачи: «VBA и Exel, OLEObjects, Создание Combobox, CheckBox на рабочем листе»
textual
Листинг программы
<font color="blue">Sub</font> TestComboboxAddItem() <font color="blue">Dim</font> objOle <font color="blue">As</font> Excel.OLEObject <font color="blue">Dim</font> cboCombo <font color="blue">As</font> MSForms.ComboBox <font color="blue">Set</font> objOle = ActiveSheet.OLEObjects.Add( _ ClassType:=<font color="teal">"Forms.ComboBox.1"</font>, Link:=False, DisplayAsIcon:=False, _ Left:=<font color="darkblue"><b>38</b></font>.<font color="darkblue"><b>25</b></font>, Top:=<font color="darkblue"><b>33</b></font>.<font color="darkblue"><b>75</b></font>, <font color="blue">Width</font>:=<font color="darkblue"><b>144</b></font>, Height:=<font color="darkblue"><b>21</b></font>.<font color="darkblue"><b>75</b></font>) <font color="blue">Set</font> cboCombo = objOle.<font color="blue">Object</font> <font color="blue">With</font> cboCombo .AddItem <font color="teal">"вот это первый"</font> .AddItem <font color="teal">"а вот второй"</font> .AddItem <font color="teal">"а это третий - три аккорда"</font> <font color="blue">End</font> <font color="blue">With</font> <font color="blue">End</font> <font color="blue">Sub</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д