Подскажите, пожалуйста, как можно ограничить ввод данных в ячейку посредством 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) ?
Заранее больше спасибо!
Здравствуйте, ребят.
Подскажите, пожалуйста, как можно ограничить ввод данных в ячейку посредством 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) ?
В данном случае есть проверка на минимальную дату (1 января 2000). Можете ее удалить, изменить или дополнить границей сверху, если необходимо. "х" - латинская, без учета регистра.
PS: формат ввода не проверяется, разумеется. Это ложится на плечи формата ячейки. Однако, если Эксель не распознает введенный текст как дату в необходимом диапазоне (или как "x"), то Вы получите предупреждение.
Здравствуйте.
Попробуйте что-нибудь подобное в проверку данных поместить (для ячейки A4 в данном случае):
В данном случае есть проверка на минимальную дату (1 января 2000). Можете ее удалить, изменить или дополнить границей сверху, если необходимо. "х" - латинская, без учета регистра.
PS: формат ввода не проверяется, разумеется. Это ложится на плечи формата ячейки. Однако, если Эксель не распознает введенный текст как дату в необходимом диапазоне (или как "x"), то Вы получите предупреждение.MacSieM
Сообщение отредактировал MacSieM - Среда, 16.03.2016, 11:17
MacSieM, krosav4ig, ребят, большое спасибо! Всё отлично работает! Именно то, что надо! :hands: _Boroda_, только что понял, почему была ошибка: я неправильно указывал диапазон действия формулы. Поправил диапазон и ошибка перестала вылетать. Если опять вылетит - сделаю скриншот и выложу его сюда. Просто я применяю эту формулу на разных листах и на одном из листов была опечатка диапазоне, поэтому именно на том листе и вылетала ошибка. А теперь я поправил и вроде как стало нормально. Спасибо!
MacSieM, krosav4ig, ребят, большое спасибо! Всё отлично работает! Именно то, что надо! :hands: _Boroda_, только что понял, почему была ошибка: я неправильно указывал диапазон действия формулы. Поправил диапазон и ошибка перестала вылетать. Если опять вылетит - сделаю скриншот и выложу его сюда. Просто я применяю эту формулу на разных листах и на одном из листов была опечатка диапазоне, поэтому именно на том листе и вылетала ошибка. А теперь я поправил и вроде как стало нормально. Спасибо!KIMVSR
Сообщение отредактировал KIMVSR - Пятница, 18.03.2016, 12:28