В форме, в зависимости от кол-ва таблиц на листе, должны повторяться одинакове группы контролов, у контролов должны быть процедуры обработки событий.
По идее, нужно один раз создать форму, а потом тиражировать ее сождержимое. Как это сделать?
For i= 1 to 5
Load txtEdit(i)
Next i
For i = 5 To 1 Step -1
Unload txtEdit(i)
Next i
For i = 1 To 5
Unload txtEdit(1)
Next i
Public WithEvents ComboBoxEvents As MSForms.ComboBox
Private Sub ComboBoxEvents_Change()
MsgBox "Change!"
End Sub
Property Let Top(digit As Integer)
ComboBoxEvents.Top = digit
End Property
Option Explicit
Sub test()
Dim cbox() As Class1
Dim Size As Integer, i As Integer
Size = 3
ReDim cbox(1 To Size)
For i = 1 To Size
Set cbox(i) = UserForm1.Controls.Add("Forms.ComboBox.1", "Cbox" & i, True)
Next
UserForm1.Show
End Sub
Option Explicit
Public WithEvents Combo As MSForms.ComboBox
'Общая процедура для всех раскрывающихся списокв
Private Sub Combo_Change()
MsgBox Combo.Name
End Sub
Option Explicit
'Коллекция раскрывающихся списков (вдруг понадобится доступ по индексу)
Private GroupCombo As New Collection
Private Sub UserForm_Activate()
Dim pControl As MSForms.Control
Dim pCombo As ComboEventHandler
Dim i As Long, iTop As Long
iTop = 4&
For i = 1 To 3
Set pCombo = New ComboEventHandler
Set pCombo.Combo = Me.Controls.Add("Forms.ComboBox.1", "Combo" & CStr(i))
pCombo.Combo.Left = 6
pCombo.Combo.Top = iTop
GroupCombo.Add pCombo
iTop = iTop + 22
Next i
End Sub
Сейчас этот форум просматривают: Yandex-бот и гости: 71