Страницы: 1
RSS
Число строк в выпадающем списке ComboBox-а не равно числу строк в "питающем" списке.
 
Добрый день, уважаемые форумчане.
Неожиданно всплыла проблема с созданной формой.
Дело в том, что в окошке выпадающего списка ComboBox-а появляется не весь "питающий" список.
Число строк в выпадающем списке равно числу записей в базе -1, а не числу строк в "питающем" списке.
Какие параметры свойств надо поменять и как?
 
Свойство ListRows.
There is no knowledge that is not power
 
Я пробовал ListRows. Оно задаёт "высоту" окошка выпадающего списка в строках.
Меня другое немного интересует.
Конкретизирую.
У меня в "питающем" списке 60 строк. ListRows задан на 8 и до 9 он и показывает. Но если число строк в базе, на которую работает эта форма, например, 10, то выпадающий список содержит не 60 строк, а 9.
 
Или иначе, например, задал ListRows 12, а в столбе базе 4 строки. В выпадающем списке появляется 3 строки из 60.
 
Ну, вернее, из 12, которые "влазят" в окошко выпадающего списка, + прокрутка.
 
Ну вот я сейчас создал новую форму с Combobox и добавил туда цифры от 1 до 20. Поставил ListRows = 2.
Вот Combobox мне и показывает только два значения, но в самом комбобоксе все 20 значений.
Или мы не о том говорим??
There is no knowledge that is not power
 
Вот в том-то и прикол, что в так как у Вас, так и должно быть. У Вас "питающий" столбец--20 строк. И в КБ 20. Даже если Вы сделаете ListRows = 30, в КБ всё равно можно увидеть все 20. Просто часть, которая сверх параметра ListRows = 2 будет с "прокрутой".
У меня же "питающий" столбец на другом листе и содержит 60 значений. ListRows = 8.
В другом столбце, на другом листе, в который вставляются значения из КБ, допустим 3 записи (вместе с первой строкой заголовков). И в КБ-е можно увидеть не все 60, а только 2.
Изменено: maseur - 23.01.2013 17:26:49
 
Ответ вполне очевиден - не все данные из списка заносятся в Комбо. Отсюда вопрос: можно ли увидеть файл? Если нет - то хотя бы приведите код, которым данные заносите в Комбо, либо напишите, как данные вообще в него попадают.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Попробуйте в комбобокс последним элементом добавить пустую строку. Бывает прокрутка некорректно срабатывает. Проверить можно выбрав последний элемент в комбобоксе мышкой, а потом стрелку вниз нажать на клавиатуре - посмотрите что будет.
 
Вот пример.
Жмёте Форма. Уже на Имя должен быть список порядка полусотни.
 
То Sergei_A

Цитата
Проверить можно выбрав последний элемент в комбобоксе мышкой
Так в том то и прикол, что не могу открыть последнюю строку КБ-а, пока не набью в базе столько строк, чтобы было на одну больше, чем в столбе, "питающем" КБ.
Таки набил, для интереса. Теперь показывается весь список. Сделал то, что Вы сказали. Перешагнул на нижнюю запись от последней в "питающем" списке. Т.е. на пустую. И ничего интересного...
 
В VBA с листа 1 можно весь код удалить. Не доглядел, когда пример делал...

Вопрос в силе.
 
у вас другой случай
Вы при инициализации формы присвоили значению rw число непустых строк в столбце"d", то есть =3
из этого проблемы
 
Понял.
rw = Cells(Rows.Count, "d").End(xlUp).Row
Т.е. надо задать величину по величине максимального списка для комбобоксов. Если это 70, то как код поправить?
 
Если при открытии формы вы в КБ хотите видеть полные списки, то и заполняйте их по количеству записей в питаюших списках.
Для каждого КБ
For i = 2 To rw
вместо  rw  поставьте определение числа непустых строк в питающем столбце
 
Вот так

Код
With Sheets("ПЕРЕЛІКИ" )     
For i = 2 To .Cells(Rows.Count, "bf" ) .End(xlUp).Row      
On Error Resume Next      
Uniq.Add .Cells(i, "bf" ) , CStr(.Cells(i, "bf" ) ) ' Данные для СВ2 берутся с другого листа, поэтому... Кстати,точки перед Cells НУЖНЫ.     
Next    
End With


и далее в том же духе
Изменено: Sergei_A - 23.01.2013 19:22:17
 
То Sergei_A.
Дошло. Спасибо Вам большое.
Всё больше и больше убеждаюсь в правоте идеи, что VBA (как и всё программирование)--это своего рода конструктор для мозгов. Просто здесь "модель" на стол не поставишь, не рассмотришь и не по трогаешь. Всё не "перед глазами", "в мозгах"...
Благодарю Вас.
 
Согласен.
Начинайте изучать возможности редактора. Самое простое - выводите msgbox со значением того или иного параметра, который вас может интересовать по ходу программы.
 
Цитата
выводите msgbox со значением того или иного параметра

Это как?

Т.е. рассматриваю я какой-то код, наткнулся на  "какой-то левый кусок", выделил его... А дальше?
 
Ну вот в этом примере - не заполнялся у вас КБ как вам хотелось. Предполагаю, что вам понятен смысл строки:
For i = 2 to rw
введите перед ней:
msgbox rw
и узнаете сколько кругов ваш цикл будет работать

------вернее до какого значения i
Изменено: Sergei_A - 23.01.2013 19:44:47
 
Спасибо за науку.
Пошёл развиваться...
Изменено: maseur - 23.01.2013 19:51:22
 
Пожалуйста.
Не поленитесь, найдите книжку Уокенбаха по VBA, для Вас приоткроется новый мир  :)
 
Цитата
найдите книжку Уокенбаха по VBA
Включено в план.
Страницы: 1
Наверх