С помощью функции «Вставить копию» в ячейку «Проверка данных» не работает - PullRequest
3 голосов
/ 14 ноября 2011

Я настроил лист Excel с выпадающими меню для некоторых ячеек. пользователь может выбирать только значения из этого списка, и появляется сообщение об ошибке когда что-то напечатано, чего нет в списке (через проверку данных

Предупреждение об ошибке).

Так что все работает нормально ... Но когда пользователь вставляет копию в ячейки, проверка не работает Как сделать проверку эффективной в случае копирования пасты. Я искал и нашел одно решение, но оно не работает. Вот код, который я нашел. но он больше не работает .. Всегда возвращаю true

Private Sub Worksheet_Change(ByVal Target As Range)

   If HasValidation(Range(ActiveCell.Address)) Then
        Exit Sub
    Else
        Application.Undo
        MsgBox "Your last operation was canceled." & _
        "It would have deleted data validation rules.", vbCritical

    End If
End Sub

Private Function HasValidation(r) As Boolean
    On Error Resume Next
    x = r.Validation.Type
    If Err.Number = 0 Then HasValidation = True Else HasValidation = False
End Function

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Похоже, вы взяли код с этой страницы:

http://www.j -walk.com / сс / Excel / советы / tip98.htm

Когда срабатывает Worksheet_Change, ваш код всегда ссылается на активную ячейку, а не на цель, где выполняется операция копирования / вставки.

Изменить

ActiveCell.Address

до

Target.Address

и посмотрите, работает ли это.

0 голосов
/ 12 декабря 2013

«Target.Address» работал для меня, как упомянуто @JimmyPena.Но решение все еще приносит ошибку, что, если кто-то пытается добавить другую проверку после добавления вышеупомянутого кода VB, пользователь уволен с количеством окон сообщения, произведенных кодом VB, который применяется к количеству ячеек (а именно.Вам нужно будет нажать «ОК» в окне сообщения, предоставленном кодом VB, для количества ячеек, к которым был применен код VB. Если код применяется к 40 ячейкам, то вам нужно нажать «ОК» 40 раз..фу ..) Можете ли вы попытаться помочь добавить еще одно условие, чтобы помочь этому?Или последний способ добавить код VB только после добавления всех проверок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...