Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex / 10 сообщений из 10, страница 1 из 1
24.10.2009, 19:28:39
    #36270648
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Есть классический файл от Уокенбаха, где есть возможность менять содержимое ListBox по событию OptionButton...

Код: plaintext
1.
2.
Private Sub obMonths_Click()
    ListBox1.RowSource = "Лист1!Месяцы"
End Sub
...
Рейтинг: 0 / 0
24.10.2009, 19:43:22
    #36270665
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Вопрос уже был? или я что-то пропустил?
...
Рейтинг: 0 / 0
24.10.2009, 20:01:33
    #36270680
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Встала задача: когда выделение в ListBox доходит до конца - стереть содержимое ListBox и загрузить следующий диапазон.

Попробовал сделать вариант с использованием события

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub ListBox1_Click()

If UserForm1.ListBox1.ListIndex =  14  Then
UserForm1.ListBox1.RowSource = ""

UserForm1.ListBox1.RowSource = "Лист1!A16:D30"

ThisWorkbook.Sheets("Лист1").Range("I1").Value = "ПЕРЕХОД НА ВТОРОЙ ДИАПАЗОН"
Else
End If

End Sub

В итоге

Код: plaintext
UserForm1.ListBox1.RowSource = "Лист1!A16:D30"

- не работает

А почему?
...
Рейтинг: 0 / 0
25.10.2009, 20:40:51
    #36271392
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Попробовал загружать через массив.
Но ... воз и ныне там...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Private Sub СТЕРЕТЬ_ЛИСТБОКС()
With ListBox1
.Clear
End With
UserForm1.ListBox1.ListIndex = - 1 
End Sub

Private Sub ЗАПОЛНИТЬ_ЛИСТБОКС()
ZZZ = ThisWorkbook.Sheets("Лист1").Range("F1").Value
Dim dataS1( 1  To  15 ,  1  To  4 )
For i =  1  To  15 
For j =  1  To  4 
dataS1(i, j) = Worksheets("Лист1").Cells(i + ZZZ, j)
Next j
Next i
ListBox1.ColumnCount =  4 
With ListBox1
.List = dataS1
End With
UserForm1.ListBox1.ListIndex =  1 
End Sub

Private Sub ListBox1_Click()
' ЕСЛИ опустить ВЫДЕЛЕНИЕ В ListBox в самый низ, то должно запуститься
' заполнение ListBox1 через массив
If UserForm1.ListBox1.ListIndex =  14  Then

'ЭТА ПРОЦЕДУРА ЗАПУСКАЕТСЯ (ЛИСТБОКС ОЧИЩАЕТСЯ)

СТЕРЕТЬ_ЛИСТБОКС

'А ЭТА НЕ ЗАПУСКАЕТСЯ...

ЗАПОЛНИТЬ_ЛИСТБОКС

ThisWorkbook.Sheets("Лист1").Range("F1").Value = ThisWorkbook.Sheets("Лист1").Range("F1").Value +  14 
Else
End If
End Sub
...
Рейтинг: 0 / 0
26.10.2009, 19:14:38
    #36273344
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Знатоки, откликнитесь... Может и нельзя это вовсе делать, а я уже 4 дня сижу...
...
Рейтинг: 0 / 0
27.10.2009, 10:06:31
    #36274086
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Значения меняются, но они не отображаются визуально (можете проверить). по быстрому не разобрался почему.
...
Рейтинг: 0 / 0
27.10.2009, 10:26:58
    #36274144
MaximuS_G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Dan-K
Решил разобраться в Вашем вопросе, и вот что получилось...
У меня не работает даже вот это:
Код: plaintext
UserForm1.ListBox1.RowSource = ""
Видимо, при заполнении списка через RowSource данные заполняются как-то отличительно от метода AddItem и требуют особого метода работы... Времени разбираться в чем этом метод заключается пока нет, но позже попробую разобратся. А пока, как вариант, можете использовать альтернативу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub ListBox1_Click()
Dim i As Byte

If UserForm1.ListBox1.ListIndex =  4  Then
    For i =  1  To ListBox1.ListCount
    ListBox1.RemoveItem ListBox1.ListCount -  1 
    Next i
'здесь вместо i*10 Вы можете брать элемент из массива, в который предварительно занесены значения с нужного диапазона
    For i =  1  To  5 
        ListBox1.AddItem i *  10 
    Next i
Else
End If

End Sub

Private Sub UserForm_Initialize()
Dim i As Byte
'здесь вместо i Вы можете брать элемент из массива, в который предварительно занесены значения с нужного диапазона
For i =  1  To  5 
    ListBox1.AddItem i
Next i

End Sub
Хочу заметить, что у меня при заполнении списка через rowsource у меня даже не срабатывает метод removeitem, пишет "неопределенная ошибка"... Интересно...
...
Рейтинг: 0 / 0
01.11.2009, 09:09:18
    #36284241
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Знатоки , только сильно не пинайте:
А если событие объекта User Form, вернее ListBox ,будет запускать код из модуля класса?
Может это "более сильно действующее средство...
...
Рейтинг: 0 / 0
04.11.2009, 17:47:00
    #36290619
Dan-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
...
Рейтинг: 0 / 0
04.11.2009, 21:44:11
    #36290912
PA
PA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex
Сделай заполнение не через ListBox1.List = dataS1 , а в цикле через

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
With ListBox1
   .AddItem col1
   .List(row,  1 ) = col2
   .List(row,  2 ) = col3
   .List(row,  3 ) = col4
   .List(row,  4 ) = col5
End With
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ListBox-Как организовать загрузку нового RowSource, при достижении максим ListIndex / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]