Страница 1 из 1
Вввод и считывание с многоколоночного listbox
Добавлено: 27 ноя 2008, 17:49
AlexZZZ
Всех категорически привествую!
Есть вопрос. Трёхколоночный listbox отображает наименование выбранного товара, количество и стоимость. Можно ли организовать построчный ввод в listbox, а также считывание данных из его выделенной строки без промежуточного ввода данных в лист Excel? Список формируется и "живёт", пока открыта пользовательская форма.
Наименование товара_____Количество______Цена
-------------------------------------------------------------
Аспирин________________100_____________5,70
Анальгин ______________2000_____________10,6
Re: Вввод и считывание с многоколоночного listbox
Добавлено: 27 ноя 2008, 18:02
Naeel Maqsudov
Если ListBox связан с диапазоном ячеек, но надо вводить данные в ячейки и изменять свойство ListFillRange.
Если это свободный ListBox, то см. свойство Column.
Ну а чтение естественно через через Column, так как просто Value дает значение только одного (связанного (BoundColumn)) столбца.
Re: Вввод и считывание с многоколоночного listbox
Добавлено: 27 ноя 2008, 22:50
AlexZZZ
Спасибо! Со считыванием через Column разобрался. А вот изменять с его помощью "свободный" listbox не получается, вероятно потому, что это свойство, а не метод.
Re: Вввод и считывание с многоколоночного listbox
Добавлено: 28 ноя 2008, 01:11
Naeel Maqsudov
Погорячился я. Все оказалось не так просто.
Код: Выделить всё
Sub aaa()
'Инициализация списка
Dim h(0 To 4, 0 To 0)
With ListBox1
.Clear
h(0, 0) = "head1"
h(1, 0) = "head2"
h(2, 0) = "head3"
h(3, 0) = "head4"
h(4, 0) = "head5"
.Column = Array("f1", "f2", "f3", "f4", "f5")
.ColumnCount = UBound(.Column, 1) + 1
End With
'добавление элементов
AddRecord ListBox1, 12, "cdccdc", 77, 44, 55, 77
AddRecord ListBox1, 54, "qwe", 33, "qwe"
AddRecord ListBox1, 14, "qwe", , , 33
AddRecord ListBox1, 14, "qwe", 65, "blabla", 55
AddRecord ListBox1, 14, "qwe", , 33
AddRecord ListBox1, 14, "qwe", 33
End Sub
Sub AddRecord(Where As MSForms.ListBox, ParamArray Record())
On Error Resume Next
With Where
i = .ListCount
n = UBound(.Column, 1)
If UBound(Record) < n Then n = UBound(Record)
If n > 1 Then
i = .ListCount
.additem Record(0), i
For j = LBound(Record) To n
If Not IsMissing(Record(j)) Then .Column(j, i) = Record(j)
Next
End If
End With
End Sub
Re: Вввод и считывание с многоколоночного listbox
Добавлено: 28 ноя 2008, 12:36
AlexZZZ
Спасибо огромное! Всё работает.