Подскажите как защитить ячейки от вставления (Ctrl+V) недостоверной информации. В табеле примере должны вводиться только часы в диапазоне чисел 1-24 за апрель 2022 год с 1 по 30 число. Что бы вводили только часы, через проверку данных ввел ограничения ввода только 1-24, более того для ячеек 28-31 числа есть дополнительное условие не разрещающая ввод даже из этого диапазона если к примеру это февраль. Дополнительно стоит защита листа (пароль 1) Если не умничать и вводить ручками цифры то все работает как и задумано. Но если скопировать любую белиберду, и вставить в эти защищенные ячейки, то excel позволяет это, еще и форматирование ломается. Можно же защитить ячейки от этого, оставив только ручной ввод?
Подскажите как защитить ячейки от вставления (Ctrl+V) недостоверной информации. В табеле примере должны вводиться только часы в диапазоне чисел 1-24 за апрель 2022 год с 1 по 30 число. Что бы вводили только часы, через проверку данных ввел ограничения ввода только 1-24, более того для ячеек 28-31 числа есть дополнительное условие не разрещающая ввод даже из этого диапазона если к примеру это февраль. Дополнительно стоит защита листа (пароль 1) Если не умничать и вводить ручками цифры то все работает как и задумано. Но если скопировать любую белиберду, и вставить в эти защищенные ячейки, то excel позволяет это, еще и форматирование ломается. Можно же защитить ячейки от этого, оставив только ручной ввод?Александр7034
Не то, что прям уж совсем отличное решение, но можно так в модуль листа написать (правой мышью на имя листа - Просмотреть код - вылезет как раз то, что нужно)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:AE9")) Is Nothing Then Application.CutCopyMode = False End If End Sub
[/vba]
Не то, что прям уж совсем отличное решение, но можно так в модуль листа написать (правой мышью на имя листа - Просмотреть код - вылезет как раз то, что нужно)
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:AE9")) Is Nothing Then Application.CutCopyMode = False End If End Sub
Не то, что прям уж совсем отличное решение, но можно так в модуль листа написать (правой мышью на имя листа - Просмотреть код - вылезет как раз то, что нужно)
Помогло но наполовину. Если скопировать ячейки excel то их действительно вставить на защищенный лист не получится. А вот если скопировать что то иное, текст с сайта к примеру, то он без проблем вставится в защищенные ячейки.
Не то, что прям уж совсем отличное решение, но можно так в модуль листа написать (правой мышью на имя листа - Просмотреть код - вылезет как раз то, что нужно)
Помогло но наполовину. Если скопировать ячейки excel то их действительно вставить на защищенный лист не получится. А вот если скопировать что то иное, текст с сайта к примеру, то он без проблем вставится в защищенные ячейки.Александр7034
Через форму VBA - я не знаю как. Да и весь проект с формулами привязками ссылками уже сделан на табличках excel, через форму наверное еще и перелопатить многое придется.
Через форму VBA - я не знаю как. Да и весь проект с формулами привязками ссылками уже сделан на табличках excel, через форму наверное еще и перелопатить многое придется.Александр7034
А вот если скопировать что то иное, текст с сайта к примеру, то он без проблем вставится в защищенные ячейки.
А так? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:AE9")) Is Nothing Then With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Empty .PutInClipboard End With End If End Sub
А вот если скопировать что то иное, текст с сайта к примеру, то он без проблем вставится в защищенные ячейки.
А так? [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range("A1:AE9")) Is Nothing Then With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText Empty .PutInClipboard End With End If End Sub