Доброго времени суток. В Excel есть функционал "Проверка данных" который срабатывает при ручном наборе данных в ячейку. А можно ли выполнить запуск "проверки данных" для конкретной ячейки средствами VBA? А то типовой вариант не отрабатывает при вводе данных копированием
Доброго времени суток. В Excel есть функционал "Проверка данных" который срабатывает при ручном наборе данных в ячейку. А можно ли выполнить запуск "проверки данных" для конкретной ячейки средствами VBA? А то типовой вариант не отрабатывает при вводе данных копированиемSGIRG
Да мне, собственно, необходимо программно инициировать запуск этой процедуры. Я считаю, что не логично на уровне VBA дублировать функционал, который уже имеется. В конкретном случае поле ограниченно конечным списком строковых значений.
Да мне, собственно, необходимо программно инициировать запуск этой процедуры. Я считаю, что не логично на уровне VBA дублировать функционал, который уже имеется. В конкретном случае поле ограниченно конечным списком строковых значений.SGIRG
На форуме есть необиженные пользователи? Зачем портить рейтинг флудом?
В самом первом посте был поставлен конкретный вопрос. Если ответ на него что-то вроде: "Нет, запустить механизм встроенной проверки не получится, пишите проверку вручную", то и нужно так отвечать. Если ответ Вам не известен, то идите мимо.
На форуме есть необиженные пользователи? Зачем портить рейтинг флудом?
В самом первом посте был поставлен конкретный вопрос. Если ответ на него что-то вроде: "Нет, запустить механизм встроенной проверки не получится, пишите проверку вручную", то и нужно так отвечать. Если ответ Вам не известен, то идите мимо.SGIRG
Мой макрос делает проверку правильности данных сам, а не с участием "проверки данных". Макрос запускается, когда происходят изменения на листе "Лист1". В проверке данных на вкладке "Сообщение об ошибке" уберите флажок "Выводить сообщение об ошибке". Макрос работает при изменении данных в столбце "B". Макрос находится в модуле листа "Лист1". Макрос обрабатывает только ситуацию, если внесены изменения в одну ячейку, если изменения внесены в несколько ячеек, то макрос не сделает проверку правильности данных.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim collValidDates As New Collection, boolError As Boolean Dim arr, i As Long
If Target.CountLarge > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Value = "" Then Exit Sub arr = Split(Target.Validation.Formula1, ";") For i = 0 To UBound(arr) collValidDates.Add Item:="", Key:=arr(i) Next i On Error Resume Next If collValidDates(CStr(Target.Value)) = "" Then End If If Err.Number <> 0 Then boolError = True End If On Error GoTo 0 If boolError = False Then Exit Sub Application.EnableEvents = False Application.Undo Application.EnableEvents = True MsgBox "Введены недопустимые данные!", vbCritical End Sub
[/vba]
Мой макрос делает проверку правильности данных сам, а не с участием "проверки данных". Макрос запускается, когда происходят изменения на листе "Лист1". В проверке данных на вкладке "Сообщение об ошибке" уберите флажок "Выводить сообщение об ошибке". Макрос работает при изменении данных в столбце "B". Макрос находится в модуле листа "Лист1". Макрос обрабатывает только ситуацию, если внесены изменения в одну ячейку, если изменения внесены в несколько ячеек, то макрос не сделает проверку правильности данных.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim collValidDates As New Collection, boolError As Boolean Dim arr, i As Long
If Target.CountLarge > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub If Target.Row = 1 Then Exit Sub If Target.Value = "" Then Exit Sub arr = Split(Target.Validation.Formula1, ";") For i = 0 To UBound(arr) collValidDates.Add Item:="", Key:=arr(i) Next i On Error Resume Next If collValidDates(CStr(Target.Value)) = "" Then End If If Err.Number <> 0 Then boolError = True End If On Error GoTo 0 If boolError = False Then Exit Sub Application.EnableEvents = False Application.Undo Application.EnableEvents = True MsgBox "Введены недопустимые данные!", vbCritical End Sub