Страницы: 1
RSS
Автоматическое раскрытие выпадающего списка при этом с возможностью печатать в ячейке без лишних кликов
 
Проблема: При выделении ячейки с выпадающим списком (сделанном через проверку данных) нужно чтобы этот список автоматически раскрывался. Сделал это при помощи If Target ... Then Application.SendKeys ("%{UP}")
В результате список раскрывается, когда входишь в ячейку, но теперь чтобы самому вводить свой текст в эту ячейку (т.е. если в выпадающем списке нет нужного тебе варианта) приходится аж три раза по ней кликать.

Хотелось бы: чтобы выпадающий список раскрывался автоматически при выделении ячейки (чтобы было видно, какие есть варианты), но при этом в первую очередь можно было бы сразу вводить текст в эту ячейку без лишних кликов, а вот для того, чтобы выбирать из списка можно, наоборот, и сделать какие-либо действия.

Почему именно так: задача усовершенствовать программу для введения данных для медицинской документации. В этих условиях есть 2 особенности:
1) так получается, что, примерно, 50% данных встречаются часто у многих больных (в примере, например, я написал самые частые жалобы), соответственно , их удобнее выбирать из списка, а 50% - редкие или даже уникальные, т.е. их явно быстрее вписать самому. Поэтому нужно иметь два вида ввода в каждой ячейке.
2) очень важен вопрос времени (т.к. пунктов очень много (более 500), а времени на больного - мало) и каждое лишнее действие, если брать все пункты, даст значимую прибавку времени в итоге.

Буду рад идеям, как можно преодолеть решить данную задачу. Заранее спасибо!
 
Зачем трижды? Выбрали любое и пишем поверх...
Может тут удобно использовать надстройку от Антона Удобный поиск в выпадающем списке_12_1.xls?
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=34212
Изменено: Hugo - 06.07.2013 01:15:55
 
Спасибо, Hugo.
Все-таки трижды: выбрал, потом двойное нажатие, чтобы начать писать поверх. А на самом деле в этом варианте еще больше чем три, т.к. часто оказываешься посреди слова, т.е. нужно еще и влево-вправо идти.

Я видел эту надстройку - не то: 1) поиск не нужен, 2) там все равно много кликов (открыть, закрыть и пр.).
Изменено: martyni - 06.07.2013 01:29:03
 
То есть вы хотите, чтобы и одновременно показывался список, и одновременно же была возможность ввода? тогда "Проверка данных" не подойдёт.
Тут надо либо задействовать ActiveX Combo (правда, ещё будет проблема с перепривязкой LinkedCell), либо разнести ввод на два столбца - например, в одной ячейке будет выбор из списка, а в другой - просто ввод данных (при этом из списка выбираем что-то типа "-" или "Другое").
 
вот я делал на заказ. справочник заполнен только для поля "пол"

список не раскрывается(можно изменить), но готов к вводу. при вводе список фильтруется с учетом введенного и уже открываются только подходящие варианты. на основе этого можно сделать и нужное вам. сами разберетесь - пожалуйста, но могу и сделать для вас(небезвозмездно).
Изменено: Слэн - 06.07.2013 09:53:32 (замена файла)
Живи и дай жить..
 
Поспорю - можно вообще без нажатий мыши:
1. встали в ячейку курсором
2. стрелка вниз
3. ввод
4. пишем своё.

Если мышью - выбрали из списка, пишем своё. Всего 2 клика.
 
Цитата
AndreTM пишет:
То есть вы хотите, чтобы и одновременно показывался список, и одновременно же была возможность ввода? тогда "Проверка данных" не подойдёт.
Это почему не подойдёт?
 
Спасибо, Hugo. Да, видимо, Вы правы, но все же проблема необходимости делать дополнительные нажатия (причем только в определенной последовательности) сохраняется.

Спасибо, AndreTM - Ваш вариант хорош, хотя, конечно, задействовать дополнительные ячейки не очень хочется.

Спасибо, Слэн - мои знания vba, конечно, пока не позволяют понять, что в Вашем примере происходит, попробую разобраться.
 
ну кратко:

на лист помещен комбобокс, по событиям перемещения выделения он делается видимым( или наоборот) и позиционируется поверх нужной ячейки. При вводе в комбобокс любого знака начинается производится фильтрация его списка на предмет содержания введенной комбинации символов(те. в списке отображаются только содержащие введенную в комбобокс комбинацию). по нажатию интер информация вводится в соотв ячейку и фокус смещается ниже
Живи и дай жить..
 
Цитата
Цитата
одновременно показывался список, и одновременно же была возможность ввода? тогда "Проверка данных" не подойдёт.
Это почему не подойдёт?
Ну, я имел в виду, что человек хочет, чтобы в момент отображения списка ("первый клик" по ячейке) можно было сразу или выбрать строку из списка, или начать набирать данные (список при этом виден!). "Проверка" так не сможет (если, конечно, не контролировать весь ввод макросами :) )
 
Ну если уж СОВСЕМ одновременно, то конечно)) Но ведь список ОСТАНЕТСЯ, и в то же время есть возможность произвольного ввода (не из списка). Нужно бы уточнение автора.
 
Да, Юрий, Вы правы, выпадающий список с проверкой данных может и то, и другое, это ясно. Но, как я пытался сформулировать в самой теме и, как совершенно точно отметил AndreTM, вопрос то в том, как работу с таким списком сделать максимально удобным в условиях когда приходится за очень короткое время заполнять большое количество пунктов при том, что существует равновероятная необходимость вводить текст в ячейку самостоятельно или выбирать из списка.

Спасибо, Слэн. Думаю над Вашим примером.
 
Посмотрите вариант обсуждения здесь
 
Спасибо, Igor67, в Ваш пример как раз то, что нужно.
 
AndreTM, в Вашем файле список раскрывается при выделении ячейки, и конкретно это с помощью макроса работает, как я понимаю. Но я видел файл с расширением XLS, где происходило то же самое (точнее, по второму клику после выделения) — правильно ли я понимаю, что раз XLS, то это не макрос? К сожалению, файл защищён и при попытке открыть в VBA соответствующий ему раздел появляется сообщение "Project is unviewable".
Возможно ли настроить такое раскрытие списка без макроса?
Изменено: VitalSense - 12.09.2015 19:34:51
 
Цитата
VitalSense написал: правильно ли я понимаю, что раз XLS, то это не макрос?
Нет: XLS-файлы могут быть как с макросом, так и без него. А вот в XLSX макросы не живут )
 
Юрий М,Спасибо.
Страницы: 1
Читают тему
Наверх