Excel VBA:无法在拖放时禁用DisplayAlert?
我试图在VBA中捕获特定的拖放事件,并希望禁用popup窗口“这里已经有数据了,你想replace它吗? 在这个事件期间。
我有从单元格[D1]到单元格[E1]的拖放function,但由于某种原因,我无法禁用popup窗口。 有谁知道为什么?
非常感谢。
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target(1, 1), [D1]) Is Nothing Then MsgBox "selected " & Target.Address & " - " & Target(1, 1).Value Application.DisplayAlerts = False End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target(1, 1), [E1]) Is Nothing Then MsgBox "changed " & Target.Address & " - " & Target(1, 1).Value End If End Sub
试试这个 – 它适用于我的2013 Excel:
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target(1, 1), [E1]) Is Nothing Then MsgBox "changed " & Target.Address & " - " & Target(1, 1).Value End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target(1, 1), [D1]) Is Nothing Then MsgBox "selected " & Target.Address & " - " & Target(1, 1).Value Application.AlertBeforeOverwriting = False Else Application.AlertBeforeOverwriting = True End If End Sub
这将使用SelectionChange
事件来捕获selectD1的用户,并使用Application.AlertBeforeOverwriting
禁用警报。 任何其他select都会确保启用。 拖动该值会导致另一个SelectionChange
现在重新启用其他覆盖警报。
此外,您应该使用事件来捕获用户在D1中单击,然后更改为另一个表或closures此表,因为警报可能会保持禁用状态。
你为什么放
Application.DisplayAlerts = False
拖放代码后? 在它之前移动它。