Excel и Listbox
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Excel и Listbox Expand / Collapse
Автор
Сообщение
07.12.2006 12:53
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 08.12.2006 10:48
Сообщ.: 10, Visits: 15
подскажите пожалуйста как сделать следующую вещь:

есть форма, на ней listbox и две кнопки. кнопка1 загружает с текущего листа таблицу из 3 колонок в ListBox, а кнопка2 должна добавлять на другой лист то, что выбрано в ListBox.

какой код необходим для кнопки2?

Сообщ. #908601
07.12.2006 13:26
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
типа такого:
Private Sub CommandButton2_Click()
r = 1 ' начало по строкам
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) Then
Sheets("Лист2").Cells(r, 1) = Me.ListBox1.List(i)
r = r + 1
End If
Next
End Sub
Сообщ. #908608
07.12.2006 13:30
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 08.12.2006 10:48
Сообщ.: 10, Visits: 15
надо учесть что в ListBox несколько столбцов, а то добавляется только первый!
Сообщ. #908610
07.12.2006 14:39
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
строку:
Sheets("Лист2").Cells(r, 1) = Me.ListBox1.List(i)

заменить на:
For j = 0 To Me.ListBox1.ColumnCount - 1
Sheets("Лист2").Cells(r, j + 1) = Me.ListBox1.List(i, j)
Next
Сообщ. #908613
07.12.2006 14:48
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 08.12.2006 10:48
Сообщ.: 10, Visits: 15
получился такой код и он не работает

Private Sub CommandButton3_Click()
  Me.ListBox1.ColumnCount = 5
  Me.ListBox1.ColumnWidths = "40;300;40;40"
  Me.ListBox1.RowSource = "a1:d145"
End Sub

Private Sub CommandButton1_Click()
r = 1 ' начало по строкам
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) Then
For j = 0 To Me.ListBox1.ColumnCount - 1
Sheets("Лист2").Cells(r, j + 1) = Me.ListBox1.List(i, j)
Next
r = r + 1
End If
Next
End Sub

Сообщ. #908617
07.12.2006 15:30
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12
Сообщ.: 386, Visits: 4 197
Это как понимать?
Me.ListBox1.ColumnCount = 5
Me.ListBox1.RowSource = "a1:d145"
или колонок ставьте 4, или d замените на e...
Сообщ. #908618
07.12.2006 15:34
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 08.12.2006 10:48
Сообщ.: 10, Visits: 15
да.... такая маленькая оплошность и из-за неё как раз и не работало.

исправил, спасибо!

Сообщ. #908619
07.12.2006 15:44
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 08.12.2006 10:48
Сообщ.: 10, Visits: 15
для красоты и удобства добавил строчку автоподбора ширины

Лист2.Columns("A:E").EntireColumn.AutoFit

может кому пригодится :)

кстати, а можно в ListBox объединить в строке столбцы, но не во  всех строках, а выборочно, т.е. если в загружаемом списке есть объеденённые столбцы, то и в ListBox их записывать такими же...так возможно?

Сообщ. #908622
08.12.2006 6:05
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 21.03.2008 5:12