如何清除所选内容中超出指定范围的复制和粘贴的值

时间:2019-05-18 17:52:18

标签: excel vba

我想将值的输入仅限制在命名范围内。输入的所有超出指定范围的内容均应清除。

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 个答案:

答案 0 :(得分:1)

尝试目标中的每个单元格(如果我正确理解了问题)

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