Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание формы для заполнения...

2.6K
14 марта 2004 года
Lev_ru
35 / / 05.03.2004
Помогите разобраться...
См.вложение 14 Kb...
258
15 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Значит по поводу пустых строчек в ComboBox - если у тебя такая проблема, то так писать конечно нельзя. RowSource это слишком простое непритязательное свойство, которое расчитано на простое заполнение ComboBox из диапазона ячеек без всякого геммороя. Если же ты хочешь произвести некоторые предварительные действия над списком прежде чем его показывать - необходимо немного потрудится:

Для заполнения Combox тогда необходимо использовать свойство .List, которому передается массив (или еще можно по элементам добавлять). В качестве примера я написал тебе простую функцию, которая получив объект Range пробегает по всем ячейкам, отбрасывая пустые, заполняет массив со значениями, который и возвращает. Вообщем там все достаточно просто.

В качестве домашнего задания тебе остается еще немного с оптимизировать эту функцию например т.о.: чтобы не передавать в нее диапазон вида a1-a65536, а передавать ей например номер столбца или даже удобнее первую ячейку, а функция чтобы сама определили последнюю используемую ячейку в этом столбце и перебирала в итоге диапзон только используемых ячеек, а не до 65536
2.6K
15 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by SergeySV
Значит по поводу пустых строчек в ComboBox - если у тебя такая проблема, то так писать конечно нельзя. RowSource это слишком простое непритязательное свойство, которое расчитано на простое заполнение ComboBox из диапазона ячеек без всякого геммороя. Если же ты хочешь произвести некоторые предварительные действия над списком прежде чем его показывать - необходимо немного потрудится:

Для заполнения Combox тогда необходимо использовать свойство .List, которому передается массив (или еще можно по элементам добавлять). В качестве примера я написал тебе простую функцию, которая получив объект Range пробегает по всем ячейкам, отбрасывая пустые, заполняет массив со значениями, который и возвращает. Вообщем там все достаточно просто.

В качестве домашнего задания тебе остается еще немного с оптимизировать эту функцию например т.о.: чтобы не передавать в нее диапазон вида a1-a65536, а передавать ей например номер столбца или даже удобнее первую ячейку, а функция чтобы сама определили последнюю используемую ячейку в этом столбце и перебирала в итоге диапзон только используемых ячеек, а не до 65536



Спасибо за помощь. На счет домашнего задания вряд ли получится, так как знания VBA у меня на уровне ламера (вообще нет).

258
15 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Lev_ru


Спасибо за помощь. На счет домашнего задания вряд ли получится, так как знания VBA у меня на уровне ламера (вообще нет).



Тут особых знаний нет, для начала достаточно знать на начальном уровне любой другой язык, если это в наличии, то тогда необходимо уточнить лишь некоторые детали

1.9K
17 марта 2004 года
DKef
44 / / 11.03.2003
Цитата:
Originally posted by SergeySV

А что если просто хранить номер последней заполненной ячейки где-то на другом листе, ну или на этом же, просто правее?
Тогда при на событие активации формы пишем типа:
Dim ps As String
pt = Range("AZ4").Value 'номер последней ячейки
UserForm1.ComboBox1.RowSource = "a1:a" + ps

258
17 марта 2004 года
SergeySV
1.5K / / 19.03.2003
Да это незачем, Excel и так хранит последнюю использ. ячейку и имеет кучу способов ее получить, это не проблема, например тот же ActiveSheet.UsedRange ну дальше можно у него .Row брать, вопрос только в том насколько удобнее работать с функцией: каждый раз явно задавая этот диапазон или указав всего лишь номер столбца - это всего лишь дело вкуса, можно и вообще совместить эти два подхода сделав такую универсальную функцию, которая использует optional параметр.
2.6K
17 марта 2004 года
Lev_ru
35 / / 05.03.2004
Цитата:
Originally posted by SergeySV
Да это незачем, Excel и так хранит последнюю использ. ячейку и имеет кучу способов ее получить, это не проблема, например тот же ActiveSheet.UsedRange ну дальше можно у него .Row брать, вопрос только в том насколько удобнее работать с функцией: каждый раз явно задавая этот диапазон или указав всего лишь номер столбца - это всего лишь дело вкуса, можно и вообще совместить эти два подхода сделав такую универсальную функцию, которая использует optional параметр.



Ребят, сделать так: combobox1 поставить в a1, combobox2 - в b2... Это все не сложно. Мне сложно определить пустую строку для вставки всех параметров.

5.3K
21 марта 2004 года
abcd
5 / / 14.09.2003
Цитата:
Originally posted by Lev_ru


Ребят, сделать так: combobox1 поставить в a1, combobox2 - в b2... Это все не сложно. Мне сложно определить пустую строку для вставки всех параметров.



'количество строк в интервале ячеек
RowsCount = Sheets("лист1").Cells(1, 1).CurrentRegion.Rows.Count

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог