Страницы: 1
RSS
Функция (или класс) для многих Combobox_AfterUpdate
 
И снова здравствуйте! Недавно разобрались с написанием класса для многих textbox_change, спасибо всем за помощь.
Понимаю, что, возможно, надоел, но хочу разобраться с написанием (скорее всего функции) для множества процедур для  Combobox со свойством AfterUpdate.
Если в частном виде для одной процедуры мы имеем код
Код
Private Sub ComboBox101_AfterUpdate()
        i = 1
            Do While ThisWorkbook.Sheets(2).Cells(i, 1) <> ""
                i = i + 1
            Loop
            ThisWorkbook.Sheets(2).Cells(i, 1) = ComboBox101.Value
        Call UserForm_Activate
        End Sub
, то как поступить в данном случае.
 
Как то так.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, не совсем. если убрать из формы весь код, что идет ниже (для каждого updateafter) добавление новых данных не происходит сразу, а только после закрытия формы. И, причем, добавление происходит побуквенно. А если слово будет длиной 10 букв, то будет 10 строк, и каждой на 1 букву больше. Я понимаю, что Вы скинули пример, но не могли бы помочь до конца разобраться?
Изменено: trovial - 19.02.2019 15:58:42
 
Цитата
trovial написал:И, причем, добавление происходит побуквенно
Какой смысл в ComboBox если Вы вводите текст побуквенно?. Я бы вообще запретил изменять и вносить значения в ComboBox, для выбора оставил бы жесткие рамки, иначе ошибок не избежать.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, ComboBox в данном случае работает на то, чтобы при вводе первых букв находить значение, которые собираются на листе, и вставлять его. Если такого значения нет, то записывать его, после того, как текст будет введён целиком, чтобы в следующий раз можно было также при вводе первых букв предложить его для вставки. В процедуре AfterUpdate это работало, но там для каждого ComboBox прописана своя процедура. Я же хочу все это объединить в класс, чтобы было компактнее.  
 
Не уловил смысла в ComboBox если они заполнены одинаковыми значениями может стоит посмотреть в сторону ListBox.
Цитата
trovial написал:
В процедуре AfterUpdate
Что это за процедура такая?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim,первое моё сообщение содержит код подобной процедуры. Private Sub ComboBox101_AfterUpdate() и т.д.
 
trovial, И в каком случае Ваша процедура должна работать?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, не должна, а работает. Когда ввожу слово в комбобокс, начиная с первой буквы, если такое слово или слова с одинаковыми буквами вначале есть, то они подставляются автоматически. Если слово уникальное - вводим целиком, после переключаемся на другой комбобокс, а наше новое слово, если начинать вводить с первой буквы, автоматически подставится в следующий раз.
По сути, это то же самое что вводить одинаковые слова в ячейках листа Excel, но теперь уже в рамках формы.
 
Цитата
trovial написал: Nordheim , не должна, а работает.
Работает там , где есть такое событие для ComboBox, для класса такого события нет , поэтому Вам придется написать функцию или процедуру самому.И еще Вам нужна привязка ComboBox(ов) к TextBox(ам).
"Все гениальное просто, а все простое гениально!!!"
 
Никак не могу понять что делает AfterUpdate, для чего постоянно дублируются данные на листе?
Зачем заполняя второй столбец ComboBox(ов), заполняется первый причем со смещением?
Некоторые сравнения не поддаются логике.
пример:
Скрытый текст

В общем все как то мутно.
Вот пример файла эмитирующий создание аналогично вашей формы с нуля, и создания классов, TextBox(ы), вроде работают. По ComboBox(ам) написал выше.
Изменено: Nordheim - 21.02.2019 10:21:46
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Зачем заполняя второй столбец ComboBox(ов), заполняется первый причем со смещением?
Затем, что это нужно для одной из основных функций "программы", которую пишу - для заполнения путевых листов и списания ГСМ. ComboBox из второго столбца подставляет данные в первый столбец, так как маршрут расписывается следующим образом :
- из пункта "А" - в пункт "Б"
- из пункта "Б" - в пункт "В"
- и т.д.

Добиться желаемого результата помогло использование ComboBox с событием AfretUpdate. Была проблема с накоплением данных, здесь - https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=103478&a... ее решили. Форма, в принципе работает, но хочется сделать код короче.
 
С вашей логикой обработки, код сделать короче проблематично.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, возможно. В силу своих навыков я видел это возможным сделать так.))) в access вроде AfterUpdate можно обработать в Form_Load...
Возможно, выхожу за рамки темы, но если знаете, как реализовать заполнение маршрутов, именно с таким функционалом и последовательностью, как у меня в Combobox'ах, буду Вам очень признателен.
Страницы: 1
Наверх