Страницы: 1
RSS
Вопрос по работе выпадающих списков в ячейке и защите листа
 
Приветствую всех пользователей форума. Возникала такая проблема. Проверять работоспособность нужно в Excel 2021 и старше.
В файле Пример на листе Ввод есть поле ввода (ячейка C4) и есть кнопка (расположена в ячейке C2).
Поле ввода более продвинутое, то есть, в поле ввода имеется возможность ввести начальные (конечные) буквы и после нажатия на треугольник в списке будут только элементы, содержащие введённые буквы. Например, если в поле ввода ввести "овна", а затем нажать на треугольник, то в выпадающем списке будет 2 элемента: Анненко Елена Владимировна и Касперович Юлия Каержановна.
Всё это неплохо работает до того момента, пока не настанет вопрос защиты листа.
Если при защите листа установить галочку напротив пункта "изменение объектов" и защитить лист, то пользоваться полем ввода можно с описанной выше возможностью (подразумевается выпадающий список, содержащий лишь определенные элементы, буквы которых были введены в поле ввода до нажатия на треугольник у поля ввода).
Но в таком случае снимается защита с кнопки (то есть, текст на кнопке можно изменить или вовсе удалить, кнопку можно переместить и т.п.).
А если же не установить галочку напротив пункта "изменение объектов" перед защитой листа, то кнопку нельзя будет удалить, нельзя будет изменить текст на ней, однако и использовать функционал поля ввода (подразумевается выпадающий список, содержащий лишь определенные элементы, буквы которых были введены в поле ввода до нажатия на треугольник у поля ввода) будет невозможно.
Вопрос к знающим макросы: как сделать так, чтобы и кнопку нельзя было ни удалить, ни изменить текст на кнопке, и в то же время можно было бы использовать функционал поля ввода (подразумевается выпадающий список, содержащий лишь определенные элементы, буквы которых были введены в поле ввода до нажатия на треугольник у поля ввода).
Изменено: offorder - 24.06.2026 14:30:22
 
Office 365. При защите листа со снятой галкой про Изменение объектов, вышеописанный функционал выпадающего списка сохраняется
Согласие есть продукт при полном непротивлении сторон
 
Sanja, какой именно вышеописанный функционал? Вы пробовали вводить конечные буквы? По начальным буквам, возможно, всё и работает, но не корректно. Можете как-то подтвердить ваши слова?
 
Sanja, должно работать "на горячую": набрали часть текста, затем нажали на треугольник; ожидаемый результат - выпадающий список, в котором содержится часть текста.
В вашем файле такое работает после того, как активная ячейка становится другой (не C4).
А вот как сделать так, чтобы активной оставалась ячейка C4? При этом без лишних нажатий на клавиатуре.
 
Sanja, то есть, ситуация такая. Ввели часть текста, а затем нажали на треугольник (сразу, не делая активной другую ячейку). И тут рассмотрим 3 варианта. 1. Защиты листа нет. В таком случае - мы получаем выпадающий список (сразу после нажатия на треугольник). 2. Защита листа есть, галочка у пункта изменение объектов установлена. В этом случае так же получаем выпадающий список. 3. Защита листа есть, галочка у пункта изменение объектов не установлена. А в этом случае ничего не происходит, однако, если сделать активной другую ячейку, а затем вернуться в ячейку C4, и нажать на треугольник, то мы получаем выпадающий список. Повторюсь: необходимо сделать так, чтобы и защита листа была (для того, чтобы нельзя было текст на кнопке изменить, изменить размеры и положение кнопки), а так же можно было получать выпадающий список сразу после ввода данных в ячейку C4 и нажатия на треугольник (без активации другой ячейки). Может, кто-нибудь сталкивался с таким или читал в другой ветке форума. Буду признателен за конструктивные советы.
 
Цитата
написал:
Вопрос к знающим макросы
зачем к знающим макросы, если проблема с выпадающим списком? Макросы здесь вообще не при делах :)
И у меня все работает без проблем с любой защитой - не надо переходить на другие ячейки, ввожу данные в ячейке со списком, раскрываю список - там только те элементы, которые содержать набранный текст.
Офис 365.
Так что возможно проблема в офисе или его обновлениях.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, у меня офис 2024. И когда лист защищён, то по нажатию на треугольник ничего не происходит, словно кнопка с треугольником заблокирована. А как вы раскрываете список? Может, каким-то другим способом?
Макросы - на тот случай, чтобы или что-то защитить, или снять защиту с каких-то элементов.
Делал все ячейки на листе не защищаемыми и ставил защиту листа - не помогло.
 
Вот есть второй файл примера.
Вопрос вот в чём: почему при вводе "ание" в выпадающем списке один элемент (должно быть два: Аниенко Елена Владимировна и Каниенко Иван Геннадьевич)?
То есть, происходит следующее. Вводится "ание", затем нажимается треугольник, после этого в ячейку автоматически вводится "Аниенко Елена Владимировна" и в выпадающем списке только один элемент? Как поправить?
Но если ввести "ние" и нажать на треугольник, то ожидаемый результат: два элемента.
А как в 365-м офисе? Такая же проблема? Или там всё хорошо с этим? Дмитрий, Саня протестируйте, пожалуйста.
 
Цитата
написал:
Вводится "ание", затем нажимается треугольник, после этого в ячейку автоматически вводится "Аниенко Елена Владимировна" и в выпадающем списке только один элемент
да, у меня точно так же работает. Т.е. с описанным "глюком". Это уже скорее всего проблема вычисления формул "на лету" совместно с новыми возможностями по отбору информации в вып.списках. Пока значение не введено в ячейку нажатием Enter - поиск работает в списке через свои внутренние механизмы и отбирает только то, что начинается на вбитое значение. Вряд ли это можно поправить, т.к. это все "внутренняя кухня".
Если вбить в ячейку "ание" и подтвердить ввод именно этого значения(а не полного ФИО, которое список старается подсунуть) - то список будет содержать ожидаемые два элемента.
Изменено: Дмитрий(The_Prist) Щербаков - 25.06.2026 15:28:48
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вот есть ещё файл пример 3. В нём 2 наименования: Аниенко Елена Владимировна и Аниенко Ирина Павловна.
При вводе вводе "ание" в выпадающем списке два элемента (должно быть три: Аниенко Елена Владимировна, Каниенко Иван Геннадьевич и Аниенко Ирина Павловна).
Но как только нажать на треугольник, то вместо "ание" сразу вводится первый элемент (Аниенко Елена Владимировна).
Почему так происходит? Может, кто подскажет?
Или как это всё обойти (опять же, с помощью макросов)?
Но если ввести "ание", затем нажать клавишу delete, а потом нажать на треугольник, то отображаются все три элемента.
Может, как-то можно выкрутиться через процедуру Worksheet_Change, но я сильно сомневаюсь.
Жаль, что нет процедуры Worksheet_KeyPress для листа.
То есть, получается, есть какие-то два списка: один, состоящий из двух элементов (для "ание") и второй - из трёх. Как сделать так, чтобы первый список не отображался сразу, а вместо него отображался второй список? Как вариант - нажать клавишу delete, но пользователю каждый раз при вводе нажимать клавишу delete как-то не friendly. Может, всё-таки кто-то подскажет более изящное решение?


 
Вместо штатного выпадающего списка (проверки данных) используйте элемент формы или ActiveX ComboBox, снабдив его нужным Вам функционалом. Или UserForm с нужным контролом
Согласие есть продукт при полном непротивлении сторон
 
Sanja, в обоих описанных вами вариантах возможна фильтрация списка элементов по части введенного текста "на лету?"
Может, есть файлы с примерами настроенной подобной фильтрации?
 
В какой-то Николай Павлов расписывал, как работают различные выпадающие списки. Может, подскажете название статьи?
 
Целый раздел в Приемах, не стесняйтесь пользоваться поиском
Выпадающие списки
Согласие есть продукт при полном непротивлении сторон
 
Вот ссылка, по-моему.
https://www.planetaexcel.ru/techniques/1/9645/
 
Но там не рассмотрены описанные вами варианты (ComboBox и UserForm). Всё же, может, у кого есть примеры с ComboBox и UserForm. Выложите, пожалуйста.
 
Цитата
Sanja написал: не стесняйтесь пользоваться поиском
выпадающий список с поиском
Согласие есть продукт при полном непротивлении сторон
 
Цитата
offorder написал: может, у кого есть примеры с ComboBox и UserForm
Пример с TextBox и ListBox
Двойным кликом в ячейке 'C4' открывается выпадающий список с поиском и фильтрацией по любой букве
Бонусом реализована возможность добавления в исходную таблицу новых ФИО через этот список
При добавлении нового значения список сортируется по столбцу ФИО
Согласие есть продукт при полном непротивлении сторон
 
Вариант с ComboBox
Двойной клик в ячейке 'C4'
Как просили - набираете текст в поле ComboBox'а, нажимаете на стрелку
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх