Тема: Ассоциация объекта и переменной

Извините за сумбурное название, но ничего больше в голову не приходит.
Дано - некоторое количество например ComboBox'ов с именами: Combo1, Combo2 ... Combo20
Возможно ли через цикл сопоставить массиву значение этих ComboBox'ов. Т.е. что-то типа:
For i = 1 to 20
Massiv (i) = Combo[i] ???
Next i

Re: Ассоциация объекта и переменной

В VBA такого нет, по-моему. В VBA вообще не поддерживаются массивы контролов :(

Re: Ассоциация объекта и переменной

> AnteC

Dim oCombo(1) As ComboBox
Dim i As Long
Set oCombo(0) = UserForm1.ComboBox1
Set oCombo(1) = UserForm1.ComboBox2
For i = 0 To 1
    MsgBox oCombo(i).Name
Next

Re: Ассоциация объекта и переменной

Я имел в виду свойство Index для контрола. И все, что оно за собой тянет.

Re: Ассоциация объекта и переменной

> Кулик Алексей aka kpblc
Если нельзя идти одним путем, пойдем другим :)

Re: Ассоциация объекта и переменной

> brigval
Спасибо

Re: Ассоциация объекта и переменной

То есть, как это не поддерживает?
Вставьте в код формы эти процедуры:

Private Sub UserForm_Click()
    Call Config
End Sub
Sub Config()
    Dim MyControl As Object
        Dim i As Integer
        For i = 0 To Controls.Count - 1
           Set MyControl = Controls.Item(i)
           MsgBox MyControl.name & "-" & i
        Next i
End Sub

Re: Ассоциация объекта и переменной

> LeonidSN
Подчеркиваю - я имел в виду аналог вполне допустимого в VB6 действия типа

If Value Then
  lblInfo(0).Caption = "тра-ля-ля"
  txtBox(1).Visible = False
  btnCommand(0).Enabled = True
End If

Все остальное (ИМХО, конечно) - попытки обойти отсутствие индексированности для контролов.

Re: Ассоциация объекта и переменной

> AnteC
Вообще лучше для объектов использовать коллекцию
а не массив, это само собой напрашивается
Потом, если индексов у нас в натуре нет, мы их
сами себе создадим
На форме для каждого такого контрола задай по порядку
свойство "Tag", например, для ComboBox1 Tag = 1 и т.д.
по нарастающей
Вот пример для кнопок, переделай под свои
типы контролов:

Public Sub GetControlInfo()
Dim ctl As Control
Dim btn As CommandButton
Dim col  As New Collection
For Each ctl In Me.Controls
If ctl.Tag <> vbNullString Then
If TypeOf ctl Is CommandButton Then
Set btn = ctl
col.Add btn, ctl.Tag
End If
End If
Next
For Each btn In col
Debug.Print btn.Caption
Next
End Sub

А для кнопки выхода следующее:

Private Sub cmdExit_Click()
GetControlInfo
Unload Me
End Sub

~'J'~

Re: Ассоциация объекта и переменной

Во-вторых:
как-то так получилось, что все правы. Себя тоже включаю в это число. Видимо, так бывает...
А первую половину ответа за меня написал Fatty.