2

Я использую проверку данных в столбце по заранее заданному списку.

но это можно легко обмануть или обойти, вставив (Ctrl+V) данные из другого источника.

Так как я могу защитить пользователя, который не может ввести неправильные данные или за его пределы из моего списка проверки.

Спасибо

3 ответа3

1

Попробуйте использовать обработчики вставки / обработчики, чтобы этого не происходило.

Это что-то вроде хака, но в вашем VBA вы можете привязать пользовательские функции к часто используемым действиям клавиш / щелчков, которые запускают события "вставки". Эти пользовательские функции могут получить доступ к выбору, на который влияет вставка, и немедленно запустить правила проверки / настраиваемые подпрограммы. Для примеров этой функциональности попробуйте это руководство (особенно раздел под названием "Проверка").

Это не мешает пользователям вставлять неверные данные в первую очередь, но приводит к немедленному отзыву неверных данных, которые могут быть достаточно близки к одной и той же вещи для ваших целей.

1

Если перехват событий вставки кажется сложным, то альтернативным решением будет просто использовать событие BeforeSave рабочей книги. В этом случае проверьте значения и, если они указаны неверно, отмените параметр «Сохранить путем».

Cancel = True

Вы можете использовать событие « Deactivate рабочего листа, но это не предлагает простой способ отменить деактивацию, но может отображаться предупреждение MsgBox .

0

Рахул, я сейчас работаю над похожей проблемой. Прочитав несколько форумов Excel и форумов помощи MS по этому вопросу, я могу сказать вам, что это действительно две проблемы:

A) стандартная копия-вставка в Excel копирует проверки из источника в место назначения. Если у вас нет никаких мер безопасности, это стирает проверку из вашего специального столбца, когда пользователь вставляет в него. Б) Excel выполняет проверку только для отдельных ячеек, а не для вставки. Довольно слабый.

Я могу решить проблему А для вас; Я думаю, вам понадобится VBA, чтобы выполнить пользовательскую проверку для проблемы B. См. Ссылки в нижней части этого поста для некоторых идей; Я не профессионал в VBA, поэтому я не могу сказать, что подойдет вам.

Для проблемы A: перейдите на вкладку «Рецензирование» и включите защиту на уровне листа или книги :). Я не видел, чтобы кто-нибудь еще упоминал это решение, но оно работает очень хорошо. Когда защита включена, пользователь не может перезаписать проверки в вашем столбце вставкой.

Права по умолчанию для пользователя на защищенном листе довольно минимальны. Если вашим пользователям нужно много прав, например возможность удалять строки, просто включите необходимые им права в диалоговом окне «Защита», установив флажки. У меня все включено, кроме Вставить гиперссылки, и я все еще не могу перезаписать проверку при включенной защите.

Вот несколько релевантных ссылок для вас:

http://www.mrexcel.com/forum/excel-questions/64596-data-validation-why-does-not-work-when-pasting-values.html

http://spreadsheetpage.com/index.php/tip/ensuring_that_data_validation_is_not_deleted/

https://social.msdn.microsoft.com/Forums/office/en-US/961e3921-5fd2-430e-bf50-aecb75a4fe05/excel-cell-data-validations-fails-on-copypaste

http://www.mrexcel.com/forum/excel-questions/519807-pasting-into-cell-data-validation.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .