Задали вопрос такой.
Как в Данные->Проверка осуществить возможность ввода только латиницы, цифр и дефиса. Но без VBA. Ибо макросы могут быть отключены.
Поискал тут, не нашёл.
То, что получилось у меня, называется "автогеном через задницу". Тем не менее, выкладываю для примера.
Пояснения в самом примере, но основные такие:
Проверяется корректность ввода символов в ячейке A1 на Лист1. Для проверки используется вспомогательный лист "ПроверочныйЛист". На котором адрес проверяемой ячейки, список разрешённых символов, вспомогательные формулы для каждого cимвола из вводимого текста. Ячейка с результатом проверки (Можно/Нельзя) является именованным диапазоном. В Лист1!A1 проверка осуществляется через Данные->Проверка с помощью формулы. На всякий случай ограничена длина текста в 1024 символа.
Для проверки других ячеек с другим набором символов нужно использовать другие столбцы по образцу столбца A. С присвоением имени ячейки в строке 3 и вводом этого имени в формулу Данные->Проверка основного листа.
Скорее всего, у кого-то есть гораздо более простой вариант. Желательно без вспомогательно листа/диапазона. И, само собой, без макросов.
PS. Проверка обходится стандартным способом через Копировать/Вставить. Но это уже обсуждалось на форуме.
Excel 97 rus
Проверка ввода. Только разрешённые символы. Без VBA.
Модератор: Naeel Maqsudov
- Вложения
-
- SymbChek.zip
- (13.07 КБ) 57 скачиваний
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
tolikt, элементарно 
Для условия вашего примера проверочной является следующая массивная формула
Cлева от знака сравнения - количество допустимых символов - справа - количество всех символов.
Если они равны - строка подходящая.
Если нужно различать прописные и строчные буквы - вместо ПОИСК нужно использовать функцию НАЙТИ
Вместо текстовой константы с допустимым набором символов целесообразно предварительно определить имя

Для условия вашего примера проверочной является следующая массивная формула
Код: Выделить всё
=СУММ(ЕСЛИ(ЕОШ(ПОИСК(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1);"0123456789abcdefghijklmnopqrstuvwxyz-"));0;1)*1)=ДЛСТР(A1)
Если они равны - строка подходящая.
Если нужно различать прописные и строчные буквы - вместо ПОИСК нужно использовать функцию НАЙТИ
Вместо текстовой константы с допустимым набором символов целесообразно предварительно определить имя