Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ограничение по вводу данных в ячейку - только дата или текст - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Ограничение по вводу данных в ячейку - только дата или текст (Формулы/Formulas)
Ограничение по вводу данных в ячейку - только дата или текст
KIMVSR Дата: Среда, 16.03.2016, 11:01 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте, ребят.

Подскажите, пожалуйста, как можно ограничить ввод данных в ячейку посредством Data Validation, чтобы вводить можно было либо дату в формате dd.mm.yyyy, либо текст (в моём случае, буква "x"). Раньше я делал это через скрипт:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("K6:X999")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Value <> "" And Target.Value <> "x" And Not IsDate(Target.Value) Then
            MsgBox "Only 'DATE' or 'X' value are allowed to input!", vbCritical
            Target.ClearContents
        ElseIf IsDate(Target.Value) Then
            Target.Value = DateValue(Format(Target, "dd.mm.yyyy"))
        End If
        Application.EnableEvents = True
        Range("K6:X9999").HorizontalAlignment = xlRight
    End If
End Sub
[/vba]
Но этот код довольно часто глючит по непонятным мне причинам, выкидывает "debug error", после чего приходится перезагружать файл для восстановления работы скрипта.

Скажите, пожалуйста, может это как-то возможно осуществить НЕ через VBA, а через Data Validation (Custom) ?

Заранее больше спасибо!


Сообщение отредактировал KIMVSR - Среда, 16.03.2016, 11:02
 
Ответить
СообщениеЗдравствуйте, ребят.

Подскажите, пожалуйста, как можно ограничить ввод данных в ячейку посредством Data Validation, чтобы вводить можно было либо дату в формате dd.mm.yyyy, либо текст (в моём случае, буква "x"). Раньше я делал это через скрипт:

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("K6:X999")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Value <> "" And Target.Value <> "x" And Not IsDate(Target.Value) Then
            MsgBox "Only 'DATE' or 'X' value are allowed to input!", vbCritical
            Target.ClearContents
        ElseIf IsDate(Target.Value) Then
            Target.Value = DateValue(Format(Target, "dd.mm.yyyy"))
        End If
        Application.EnableEvents = True
        Range("K6:X9999").HorizontalAlignment = xlRight
    End If
End Sub
[/vba]
Но этот код довольно часто глючит по непонятным мне причинам, выкидывает "debug error", после чего приходится перезагружать файл для восстановления работы скрипта.

Скажите, пожалуйста, может это как-то возможно осуществить НЕ через VBA, а через Data Validation (Custom) ?

Заранее больше спасибо!

Автор - KIMVSR
Дата добавления - 16.03.2016 в 11:01
MacSieM Дата: Среда, 16.03.2016, 11:15 | Сообщение № 2
Группа: Проверенные
Ранг: Участник
Сообщений: 84
Репутация: 18 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.

Попробуйте что-нибудь подобное в проверку данных поместить (для ячейки A4 в данном случае):
Код
=ИЛИ(И(ЕЧИСЛО(A4);A4>=ДАТА(2000;1;1));СТРОЧН(A4)="x")


В данном случае есть проверка на минимальную дату (1 января 2000). Можете ее удалить, изменить или дополнить границей сверху, если необходимо.
"х" - латинская, без учета регистра.

PS: формат ввода не проверяется, разумеется. Это ложится на плечи формата ячейки. Однако, если Эксель не распознает введенный текст как дату в необходимом диапазоне (или как "x"), то Вы получите предупреждение.


Сообщение отредактировал MacSieM - Среда, 16.03.2016, 11:17
 
Ответить
СообщениеЗдравствуйте.

Попробуйте что-нибудь подобное в проверку данных поместить (для ячейки A4 в данном случае):
Код
=ИЛИ(И(ЕЧИСЛО(A4);A4>=ДАТА(2000;1;1));СТРОЧН(A4)="x")


В данном случае есть проверка на минимальную дату (1 января 2000). Можете ее удалить, изменить или дополнить границей сверху, если необходимо.
"х" - латинская, без учета регистра.

PS: формат ввода не проверяется, разумеется. Это ложится на плечи формата ячейки. Однако, если Эксель не распознает введенный текст как дату в необходимом диапазоне (или как "x"), то Вы получите предупреждение.

Автор - MacSieM
Дата добавления - 16.03.2016 в 11:15
krosav4ig Дата: Среда, 16.03.2016, 17:30 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1362
Репутация: 548 ±
Замечаний: 0% ±

Excel 2007, 2013
еще вариант формулы для проверки данных
Код
=ИЛИ(A1="x";И(1-ЕОШ(ДАТАЗНАЧ(ТЕКСТ(A1;"Д.М.Г")));ИЛИ(ЯЧЕЙКА("формат";A1)="d"&СТРОКА($1:$5))))


(_)Õvõ(_)
 
Ответить
Сообщениееще вариант формулы для проверки данных
Код
=ИЛИ(A1="x";И(1-ЕОШ(ДАТАЗНАЧ(ТЕКСТ(A1;"Д.М.Г")));ИЛИ(ЯЧЕЙКА("формат";A1)="d"&СТРОКА($1:$5))))

Автор - krosav4ig
Дата добавления - 16.03.2016 в 17:30
_Boroda_ Дата: Среда, 16.03.2016, 17:35 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9381
Репутация: 3951 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
этот код довольно часто глючит по непонятным мне причинам, выкидывает "debug error"

А где при этом выделяет желтым?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
этот код довольно часто глючит по непонятным мне причинам, выкидывает "debug error"

А где при этом выделяет желтым?

Автор - _Boroda_
Дата добавления - 16.03.2016 в 17:35
KIMVSR Дата: Пятница, 18.03.2016, 12:19 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 96
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
MacSieM, krosav4ig, ребят, большое спасибо! Всё отлично работает! Именно то, что надо! :hands:
_Boroda_, только что понял, почему была ошибка: я неправильно указывал диапазон действия формулы. Поправил диапазон и ошибка перестала вылетать. Если опять вылетит - сделаю скриншот и выложу его сюда. Просто я применяю эту формулу на разных листах и на одном из листов была опечатка диапазоне, поэтому именно на том листе и вылетала ошибка. А теперь я поправил и вроде как стало нормально. Спасибо!


Сообщение отредактировал KIMVSR - Пятница, 18.03.2016, 12:28
 
Ответить
СообщениеMacSieM, krosav4ig, ребят, большое спасибо! Всё отлично работает! Именно то, что надо! :hands:
_Boroda_, только что понял, почему была ошибка: я неправильно указывал диапазон действия формулы. Поправил диапазон и ошибка перестала вылетать. Если опять вылетит - сделаю скриншот и выложу его сюда. Просто я применяю эту формулу на разных листах и на одном из листов была опечатка диапазоне, поэтому именно на том листе и вылетала ошибка. А теперь я поправил и вроде как стало нормально. Спасибо!

Автор - KIMVSR
Дата добавления - 18.03.2016 в 12:19
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Ограничение по вводу данных в ячейку - только дата или текст (Формулы/Formulas)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!