2015-05-13 1 views
1

Как это сделать? У меня довольно сложный listBox, содержащий всего 12 столбцов и вы хотите заполнить поля textBox в моей форме на listBox_Click().Выбранные столбцы столбцов столбцов, на которые ссылается имя столбца заголовка listBox вместо номера индекса столбца

На данный момент я делаю это так, что:

With Me 
    .txtBox1 = Me.lstBox.Column(0) 
    .txtBox2 = Me.lstBox.Column(1) 
    .txtBox3 = Me.lstBox.Column(5) 
    .txtBox4 = Me.lstBox.Column(10) 
End With 

Однако, это может быть очень запутанным, когда я добавить/удалить определенный столбец из listBox. VBA не позволит мне ссылаться на Column таким образом:

Me.txtBox1 = Me.lstBox.Column("Price") 

Где "Price" в основном Column header, который отображает в моем lstBox.

ответ

1

У вас нет. Вернее, если вы настаиваете, сначала вам нужно создать коллекцию VBA с именем coloumn как ключом и индексом как значением. Затем вы можете сделать так:

Me!txtBox1.Value = Me!lstBox.Column(CollectionOfColumns("Price")) 

Или, если ряд столбцов фиксирован, вы можете создать Enum и использование:

Me!txtBox1.Value = Me!lstBox.Column(EnumOfColumns.Price) 
+0

Я видел некоторые VBA-код на другие формы с помощью '.Control .Name' и '.Controls.Name'. Я не совсем понял, как это работает. Это может быть одно из решений? – emihir0

+0

Я думаю, нет. Но если вы (временно) установите Me! LstBox.ColumnHeads = True, вы можете получить заголовки столбцов из нулевой строки: ColumnHeadN = Me! LstBox.Column (N, 0) – Gustav

+0

Это очень полезно, не знал об этом, благодаря! Теперь он отсортирован =). – emihir0

Смежные вопросы