2017-02-23 2 views
1

Ich versuche, ein bestimmtes Drag & Drop-Ereignis in VBA zu erfassen, und möchte das Popup "Es gibt bereits Daten hier. Möchten Sie es ersetzen?" während dieser Veranstaltung.Excel VBA: DisplayAlert kann nicht während Drag & Drop deaktiviert werden?

Ich habe das grundlegende Ereignis eines Drag & Drop von Zelle [D1] in Zelle [E1] erfasst, aber aus irgendeinem Grund kann ich das Popup nicht deaktivieren. Weiß jemand warum?

Vielen Dank.

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 

Antwort

3

Versuchen Sie, diese - es funktioniert auf meinem 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 

Dies verwendet die SelectionChange Ereignis dem Benutzer die Auswahl D1 zu fangen und deaktiviert die Benachrichtigung für Application.AlertBeforeOverwriting. Jede andere Auswahl stellt sicher, dass sie aktiviert ist. Das Ziehen des Werts verursacht ein anderes SelectionChange, das die Warnung für jedes andere Überschreiben jetzt wieder aktiviert.

Sie sollten auch Ereignisse verwenden, um Benutzer in D1 zu blockieren und dann zu einem anderen Blatt zu wechseln oder dieses zu schließen, da die Warnmeldungen deaktiviert bleiben könnten.

+0

Super, das funktioniert perfekt, danke! Vereinbart, ich plane, das Popup wiederherzustellen, wenn der Benutzer klickt (irgendwo anders). –

0

Warum Sie

Application.DisplayAlerts = False 

nach dem Drag gelegt hat und Code fallen lassen? Bewege es davor.

+0

Ich denke, Mark versucht, das Popup zu deaktivieren, wenn das Ereignis den Benutzer abfängt, Zelle D1 zu wählen - bevor Sie es dann in E1 – CLR

+0

CLR ziehen, sind Sie richtig. Ich möchte nur Popups deaktivieren, wenn D1 ausgewählt ist, bevor Sie in E1 ziehen. Fajka, ich habe Ihren Vorschlag nur für Tritte und es hatte keinen Effekt. –