我是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对象,并且我什么也没做,因为这似乎使我无处不在。
答案 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