仅在特定列中按Enter键后清除单元格

时间:2018-08-28 09:13:22

标签: excel vba excel-vba

我是VBA的新手,目前正试图弄清楚如何在按Enter键后清除特定列中的单元格。我从另一个问题中找到了这段代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
        Target.ClearContents
    Application.EnableEvents = True
End Sub

除了对工作表上的所有单元格都执行此操作外,此方法工作正常。我知道选择列的代码是

Columns(3).Select

(3是我这次想要的列)。我试过像这样

Target.ClearContents = Columns(3).Select

然后创建它,这样,如果我在其他列中输入数据,则会导致错误,因此我尝试解决该问题

If Columns(3).Select = "" Then
Else
    Target.ClearContents = Columns(3).Select
End If

这带有运行时错误424对象,并且我什么也没做,因为这似乎使我无处不在。

1 个答案:

答案 0 :(得分:1)

我相信这是您要查找的内容,但这并不是要查看用户是否在给定的单元格上按了 enter ,它只是查看是否已对用户单元进行了任何更改。单元格,这包括选择要进行某些更改的单元格,然后移至另一个单元格:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 Then
        Application.EnableEvents = False
            Target.ClearContents
        Application.EnableEvents = True
    End If
End Sub

更新: 要检查用户是否在C3:E4上粘贴了数据,下面将确保仅删除Column C上的数据,这要感谢Chris Neilsen的评论:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, Arr As Range
Application.EnableEvents = False
For Each Arr In Target.Areas
    Set rng = Application.Intersect(Me.Columns(3), Arr)
    If Not rng Is Nothing Then rng.ClearContents
Next
Application.EnableEvents = True
End Sub