ListBox вывод из разных столбцов VBa Excel

Программирование на Visual Basic for Applications
Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

ListBox вывод из разных столбцов VBa Excel

Сообщение Lionzi » 01.02.2005 (Вт) 12:10

Здраствуйте.

Поможите чем сумеете.

Мне необходимо создать ListBox со списком, который состоит из нескольких столбцов, к примеру из (1,2, 7 и 4).

Существует таблица, все строки заполнены.

Как это можно осуществить наилучшим образом?

Заранее благодарен, Lionzi.
Ну что взять с чайника, кроме кипятка?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.02.2005 (Вт) 12:11

Задай ColumnsCount и ColumnsWidth.
Lasciate ogni speranza, voi ch'entrate.

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 01.02.2005 (Вт) 12:14

Извини, к сожалению чайник, а за VBa последний раз брался больше года назад, сейчас приперло, а под рукой ни справочника ни книги, можно ли привести пример кода?
Ну что взять с чайника, кроме кипятка?

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

Сообщение GSerg » 01.02.2005 (Вт) 12:21

list1.columnscount=4
list1.additem "first"
list1.list(list1.listcount-1,1)="second"
list1.list(list1.listcount-1,2)="third"
list1.list(list1.listcount-1,3)="fourth"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 01.02.2005 (Вт) 13:14

Ну вот, чувствую себя дураком...
не могу разобраться.
Попробую описать ситуацию еще раз.

Имеется форма, допустим Reestr, на ней размещается ListBox (хотя это не принципиально, но желательно).
Соответственно есть желание чтобы он брал с листа "Лист1" все строки, и выводил на экран только некоторые из столбцов списком. Это нужно, для того, чтобы в дальнейшем выбирать нужную позицию и производить ряд операций...

Раньше подобного не делал, только для 1 строки для ComboBox
это выглядело примерно так:
Код: Выделить всё
Private Sub UserForm_Initialize()

With ComboBox
    .RowSource = Range("A116").CurrentRegion.Address
    .ListIndex = 0
End With

End Sub

Если делать как делал раньше выходит только столбец - первый.

Попробывал помучить ColumnsCount
ума не хватило...
Ну что взять с чайника, кроме кипятка?

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

Сообщение GSerg » 01.02.2005 (Вт) 13:22

Lionzi писал(а):Ну вот, чувствую себя дураком...

Это чувство постоянно заставляет программера двигаться дальше :)

Код: Выделить всё
dim i as long

listbox1.columnscount=4
with worksheets("Лист1")
  for i=1 to .usedrange.rows.count
    listbox1.additem .cells(i,1).value
    listbox1.list(listbox1.listcount-1,1)=.cells(i,2).value
    listbox1.list(listbox1.listcount-1,2)=.cells(i,3).value
    listbox1.list(listbox1.listcount-1,3)=.cells(i,4).value
  next
end with
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 01.02.2005 (Вт) 14:20

Это чувство постоянно заставляет программера двигаться дальше

Класно сказано.


Сегодня совсем голова не соображает.
С одной стороны секретарь, не может документ распечатать, с другой бухгалтер с foxPro требует обнуления данных (с пометкой срочно), на носу сессия (из 5 кр готова только одна). и еще надо составить программу чтобы бух-а ничего не споганили.

Смысл в том, что у меня снова не получилось, выводит пустое окно.
И никакой ругани...

по задумке должно все происходить при открытии формы...

Код привожу как есть в последней вариации
[code]
Private Sub Reestr_Initialize()

Dim i As Long

Listbox1.columnscount = 4
With Worksheets("Лист1")
For i = 1 To .UsedRange.Rows.Count
Listbox1.AddItem .Cells(i, 1).Value
Listbox1.List(Listbox1.ListCount - 1, 1) = .Cells(i, 2).Value
Listbox1.List(Listbox1.ListCount - 1, 2) = .Cells(i, 3).Value
Listbox1.List(Listbox1.ListCount - 1, 3) = .Cells(i, 4).Value
Next
End With

End Sub
[\code]
Ну что взять с чайника, кроме кипятка?

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

Сообщение GSerg » 01.02.2005 (Вт) 14:44

Можно последовать совету Алибека и задать columnswidth...
Лучше не в коде, а в дизайнере.
Чё-нить типа 1 см; 2 см; 3 см
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 01.02.2005 (Вт) 14:51

Это как?
Ну что взять с чайника, кроме кипятка?

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

Сообщение GSerg » 01.02.2005 (Вт) 14:54

Дизайнером пользоваться не ага? :)

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

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 02.02.2005 (Ср) 11:29

Спасибо вам.

Ну что, как говориться сам дурак...!

Ошибка в columncounse это раз,
ошибка в DNK это два. В заголовке программы вместо userform указывал название формы - reestr, что и привело к срыву.

сразу еще один вопрос. У формы UserForm есть свойство ColumnHeads отвечающее за показ заголовков столбцов, как столбцам присвоить имена?
Непосредственно, и из таблицы??
Ну что взять с чайника, кроме кипятка?

Lionzi
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 12.09.2003 (Пт) 10:19

Сообщение Lionzi » 09.02.2005 (Ср) 15:22

Все равно ума не хватает, неполучается привязать, выдает ошибку.
Возможно проблема в том, что чисол строк неограничено и информация берется из столбцов не подряд.

Привожу "свой" код целиком.
Код: Выделить всё

Private Sub UserForm_Initialize()

Dim i As Long

With VyvodSpiska
   
    .ColumnCount = 4
    .ColumnWidths = "20,55,250"
    .ColumnHeads = True
     
End With

With Worksheets("Calculat")
 
  For i = 2 To .UsedRange.Rows.Count
    VyvodSpiska.AddItem .Cells(i, 1).Value
    VyvodSpiska.List(VyvodSpiska.ListCount - 1, 1) = .Cells(i, 2).Value
    VyvodSpiska.List(VyvodSpiska.ListCount - 1, 2) = .Cells(i, 3).Value
    VyvodSpiska.List(VyvodSpiska.ListCount - 1, 3) = .Cells(i, 26).Value
  Next

End With

End Sub
Ну что взять с чайника, кроме кипятка?

Штурман
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 25.07.2003 (Пт) 10:47
Откуда: Москва

Сообщение Штурман » 09.02.2005 (Ср) 19:03

кинь наверно свою книгу сюда
Shturman967@mail.ru
так наверно быстрее будет.Толко задачу как следоват описать не забудь


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

    TopList