我试图在用户清除表标题时捕获工作表更改事件。
Private Sub Worksheet_Change(ByVal Target As Range)
application.EnableEvents = False
If Not Intersect(Target, Me.ListObjects("Table1").HeaderRowRange) Is Nothing Then
msgbox "Hello"
end if
application.EnableEvents = True
End Sub
如果用户按下"删除"要清除表上的非默认标题名称,Excel会自动使用默认标题名称替换空白标题(例如," Column1")。这似乎导致工作表更改事件多次运行。我想找出一种方法,让用户清除标题时只运行一次此事件。
非常感谢任何帮助。
答案 0 :(得分:1)
最简单的解决方法是在事件开始时添加一个断言,检查目标单元格是否已包含默认列名。
我会使用简单的if
和like
语句执行此操作,该语句在标题以“列”开头时捕获并使用Exit Sub
退出事件。您可以通过一行简单的代码完成所有这些操作。有点像...
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.value Like "Column*" Then Exit Sub
application.EnableEvents = False
If Not Intersect(Target, Me.ListObjects("Table1").HeaderRowRange) Is Nothing Then
msgbox "Hello"
end if
application.EnableEvents = True
End Sub
此代码未经测试,但它应该为您提供良好的基础。