VBA и Exel, OLEObjects, Создание Combobox, CheckBox на рабочем листе

Узнай цену своей работы

Формулировка задачи:

Я пишу макросы в VB и необходимо создать ряд объектов (CheckBox'ов и ComboBox'ов) на рабочем листе Worksheets. В данный момент я пришел к выводу использовать OLEObjects, но возникли следующие приблемы:
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>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы