Excel VBA:无法在拖动过程中禁用DisplayAlert+;滴

Excel VBA:无法在拖动过程中禁用DisplayAlert+;滴,vba,excel,action,messagebox,Vba,Excel,Action,Messagebox,我正在尝试捕获VBA中的特定拖放事件,并希望在此事件期间禁用弹出窗口“此处已有数据。是否要替换它?” 我捕获了从单元格[D1]拖放到单元格[E1]的基本事件,但由于某些原因,我无法禁用弹出窗口。有人知道为什么吗 非常感谢 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target(1, 1), [D1]) Is Nothing Then

我正在尝试捕获VBA中的特定拖放事件,并希望在此事件期间禁用弹出窗口“此处已有数据。是否要替换它?”

我捕获了从单元格[D1]拖放到单元格[E1]的基本事件,但由于某些原因,我无法禁用弹出窗口。有人知道为什么吗

非常感谢

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
你为什么把它放进去

Application.DisplayAlerts = False

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

试试这个-它在我的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
事件捕获用户选择D1并使用
Application.AlertBeforeOverwrite
禁用警报。任何其他选择都可以确保它已启用。拖动该值会导致另一个
SelectionChange
,现在它会重新启用任何其他覆盖的警报


此外,您应该使用事件来捕获用户在D1中单击,然后切换到另一张工作表或关闭此工作表,因为警报可能会保持禁用状态。

我认为如果事件捕捉到用户选择单元格D1,则Mark试图禁用弹出窗口-在将其拖动到E1CLR之前,您是正确的。我只想在拖动到E1之前,如果选择了D1,则禁用弹出窗口。Fajka,我尝试了你的建议只是为了好玩,但没有效果。太棒了,效果很好,谢谢!同意,如果用户单击(其他任何地方),我计划恢复弹出窗口。