Как предотвратить вставку над проверкой выпадающей ячейки в Excel VBA - PullRequest
0 голосов
/ 29 мая 2018

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

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range
For Each Cell In Range("D2:F13")
    If Not Cell.Validation.Value Then
        MsgBox "Value violates validation rule"
        Application.Undo
        Exit Sub
    End If
Next

В идеале код должен проверять, соответствует ли значение вставляемой ячейки параметрам раскрывающегося списка проверки, и позволяет только вставить значение (не форматирование) в ячейку.

Спасибо!

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете отключить Вырезать \ Копировать в определенной ячейке:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' TARGET IS YOUR VALIDATION CELL
    If Target.Column = 1 And Target.Row = 1 Then
        Application.CutCopyMode = False
    End If
End Sub

Или, что более сложно, вы можете попробовать проверить буфер обмена пользователя на SelectionChange

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    ' TARGET IS YOUR VALIDATION CELL
    If Target.Column = 1 And Target.Row = 1 Then

        Set MyData = New DataObject
        MyData.GetFromClipboard

        'In MyData.GetText you have the clipboard data in text format
        If MyData.GetText <> "what you want" then
            '...
        End if

    End If
End Sub

В этом случае вы должны добавить ссылку на Microsoft Forms 2.0 Object Library.Вы можете найти его по этому пути: C:\Windows\System32\FM20.DLL

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