Как очистить значения, скопированные и вставленные за пределы именованного диапазона из выбора - PullRequest
2 голосов
/ 18 мая 2019

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

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  If Intersect(Target, Range("Liczby")) Is Nothing Then
    Application.EnableEvents = False
    Target.ClearContents
    Application.EnableEvents = True
  End If

End Sub

К сожалению, Excel позволяет заполнять ячейки также с помощью команды «Копировать / Вставить» (мышь, клавиатура).Мой код должен очистить все, что было вставлено за пределы указанного диапазона.Следует вставлять только частичные значения, которые вписываются в именованный диапазон, и не отображать значения, вставленные за пределы именованного диапазона (очистить).

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

1 Ответ

1 голос
/ 18 мая 2019

Попробуйте каждую ячейку в цели (если я правильно понял проблему)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Application.EnableEvents = False
    For Each Cel In Target.Cells
        If Intersect(Cel, Range("Liczby")) Is Nothing Then
        Cel.ClearContents
        End If
    Next
Application.EnableEvents = True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...