Динамические массивы элементов управления - как?

Программирование на Visual Basic for Applications
litvin22
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 01.06.2007 (Пт) 17:30
Откуда: Ставрополь

Динамические массивы элементов управления - как?

Сообщение litvin22 » 06.06.2007 (Ср) 14:23

Можно ли, а если можно, то как:
В VBA (CorelDraw 13 или Excel) создать динамический массив элементов управления.
Он не поддерживает индексированные элементы управления, как VB.

Метод Add позволяет создать любое кол-во элементов, но они не отслеживают событий.
Может можно как-то заставить?

Если через WithEvents, то реагирует только последний элемент.

Писать заранее кучу WithEvents, и кучу событий к ним - нереально.
У меня читаются однотипные пакты данных из файла и я не знаю заранее, сколько их будет
Можно, конечно, отлеживать событи мыши в разных частях формы,на которой нарисованы псевдоэлементы, но это не удобно по ряду причин.

Dim comArray() As CommandButton
Dim WithEvents comWithEvents As CommandButton

Private Sub CommandButton1_Click() '' äèíàìè÷åñêèé ìàññèâ êíîïîê
Dim i As Long, ii As Long
ii = 5
ReDim comArray(1 To ii)
For i = 1 To ii
Set comArray(i) = Controls.Add("Forms.CommandButton.1", "comArray_" & (i), True)
With comArray(i)
.Left = 0: .Top = i * 20
.Width = 100: .Height = 20
.Caption = "Êíîïêà " & comArray(i).Name
End With
Next i
End Sub

Private Sub comArray_Click() ''ñîáûòèå äëÿ êíîïêè comArray
MsgBox "Ok"
End Sub

Private Sub CommandButton2_Click() '' ìíîãîêðàòíîå äîáàâëåíèå
Dim i As Long, ii As Long
ii = 5
For i = 1 To ii
Set comWithEvents = Controls.Add("Forms.CommandButton.1", "comWithEvents_" & (i), True)
With comWithEvents
.Left = 100: .Top = i * 20
.Width = 100: .Height = 20
.Caption = "Êíîïêà " & comWithEvents.Name
End With
Next i
End Sub

Private Sub comWithEvents_Click() ''ñîáûòèå äëÿ êíîïêè comWithEvents
MsgBox "Ok"
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.06.2007 (Ср) 14:26

litvin22, здесь наказывают за создание дублей.
Особенно дублей, задающих вопросы, ответы на которые находятся поиском.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 57

    TopList  
cron