Страница 1 из 1
Автозаполнение для textbox
Добавлено: 19 июн 2009, 12:37
RomaS
Добрый день!
Следующая задача:
Как в текстбоксе формы выполнять автозаполнение (или подстановку вариантов, не знаю как понятней объяснить), в общем, по мере ввода начала слова чтобы предлагались варианты его продолжения, как в ячейках эксель. Нужно заполнять три текстбокса с ФИО, ну фамилия понятно, вряд-ли совпадет, а вот имена и отчества явно не уникальны. А брать их желательно из столбца на листе, если набранного имени еще нет- добавить в этот "справочник"
Re: Автозаполнение для textbox
Добавлено: 19 июн 2009, 16:44
Aent
В аттаче пример решения с использованием функций листа MS Excel.
На основании этого кода легко построить класс.
Как показала практика - автоматическое расширение текста в поле ввода
(без специальной клавиши, в данном примере - F2) неудобно оператору.
Re: Автозаполнение для textbox
Добавлено: 22 июн 2009, 08:23
RomaS
Большое спасибо! Сейчас буду пробовать, может что и получится

Re: Автозаполнение для textbox
Добавлено: 22 июн 2009, 14:27
mc-black
Кроме непосредственно текстового поля мне кажется очень удобно и просто использовать ComboBox, который имеет встроенную возможность автоподстановки текста, подобную той, что есть в ячейках Excel под списком. Достаточно добавить сортировку входных данных и раскрытие списка при начале ввода текста. Смотрите мой пример (вложение).
Re: Автозаполнение для textbox
Добавлено: 23 июн 2009, 00:17
Aent
Mc-black, вариант, разумеется, возможный, но моих операторов (да и меня) раздражает подсказка непосредственно в поле ввода.
Кроме того, практика показала, что когда autocomplete промахивается, большинство
обученных! (

) операторов вместо того что бы сразу нажать DEL и продолжить ввод, нажимают стрелку вправо или влево и затем стирают по одному символу

и только потом вводят новый текст.
Опять же предложенная схема хороша когда идёт сопоставление слева для тех же
фамилий (о чём собственно и писал топикстартер), а предложенный мной вариант
легко модифицируется в схему сопоставления "*Text*", удобную при вводе артикулов или номенклатуры названий, c выводом результатов сопоставления в
ComboBox.
Re: Автозаполнение для textbox
Добавлено: 23 июн 2009, 00:50
mc-black
Делайте как вам удобно, я на практике автокомплит еще не применял.
Re: Автозаполнение для textbox
Добавлено: 23 июн 2009, 10:46
Aent
это я просто в порядке обсуждения ...

Re: Автозаполнение для textbox
Добавлено: 29 июн 2009, 10:02
RomaS
Mc-black, да, такой вариант тоже неплох. убрал стрелку, уменьшил отображение строк до трех... На первый взгляд достаточно удобно
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Для второго варианта (с комбобокс) добавил сохранение нового значения:
Код: Выделить всё
Private Sub ComboBox1_AfterUpdate()
Dim i As Long
i = 1
Do While Not ThisWorkbook.Worksheets(1).Cells(i, 1).Value = Empty
If ThisWorkbook.Worksheets(1).Cells(i, 1).Value <> UserForm1.ComboBox1.Value Then
i = i + 1
Else
Exit Sub
End If
Loop
If MsgBox("Добавить запись """ & UserForm1.ComboBox1.Value & """ ?", vbYesNo + vbQuestion) = vbYes Then
ThisWorkbook.Worksheets(1).Cells(i, 1).Value = _
StrConv(Trim(UserForm1.ComboBox1.Value), vbProperCase)
End If
End Sub
Сойдет? Или можно как-нибудь получше?
