Крис использует метод проверки данных, который успешно предотвращает ввод неуникальной информации в столбец. (Этот метод был описан в предыдущих выпусках ExcelTips.) Он справедливо отмечает, что проблема с проверкой данных все еще существует: кто-то может вставить информацию в ячейку и успешно обойти все проверки на месте.

Например, если вы наберете «Джордж» в ячейке A8, а затем «Джордж»

в A9 обычная проверка данных вызовет ошибку, как и следовало ожидать, указывая на то, что значение, которое вы пытаетесь ввести, не является уникальным.

Однако, если вы введете «Джордж» в ячейку A8, скопируете эту ячейку и вставите ее в ячейку A9, ошибка проверки данных не возникнет — вставка разрешена.

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next     For Each TmpRng In Target         TmpVal = TmpRng.Validation.Type         If TmpVal > 0 Then             If Application.CutCopyMode = 1 Then                 MsgBox "You cannot paste into validated cells."

Application.CutCopyMode = False                 Exit Sub             End If         End If     Next End Sub

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

Далее пользователь увидит диалоговое окно, указывающее на ошибку.

Обратите внимание, что эта процедура просто проверяет, выполняется ли вставка в ячейку с подтвержденными данными. Если да, то генерируется ошибка.

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

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2449) применим к Microsoft Excel 97, 2000, 2002 и 2003.