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 

拖放代码后? 在它之前移动它。

Interesting Posts