2017-02-23 7 views
1

VBAで特定のドラッグアンドドロップイベントをキャプチャしようとしていますが、ポップアップを無効にしたいと思います。「既にデータがあります。置き換えますか?」このイベント中にExcel VBA:ドラッグアンドドロップ中にDisplayAlertを無効にできませんか?

セル[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 

答えて

3

はこれを試してみてください - それは私の2013エクセル上で動作します:

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 

これは、D1を選択し、ユーザーをキャッチするSelectionChangeイベントを使用してApplication.AlertBeforeOverwritingを使用してアラートを無効にします。それ以外の選択は有効になっています。値をドラッグすると別のSelectionChangeが発生し、他の上書きのアラートが再び有効になります。

また、イベントを使用して、D1でユーザーをクリックして別のシートに変更するか、アラートが無効のままになる可能性があるため、このシートを閉じる必要があります。

+0

素晴らしいです、完璧に動作します、ありがとうございます!同意すると、ユーザーが(他の場所で)クリックすると、ポップアップを復元する予定です。 –

0

は、なぜあなたは、ドラッグ&ドロップのコードの後

Application.DisplayAlerts = False 

を入れたのですか?それの前に移動してください。

+0

私はイベントがE1を選択したユーザーをキャッチした場合、マークを無効にしようとしていると思います - それをE1 – CLR

+0

CLRにドラッグする前に、あなたは正しいです。 E1にドラッグする前に、D1が選択されている場合にのみポップアップを無効にします。 Fajka、私はあなたの提案をちょうどキックのために試みましたが、それは効果がありませんでした。 –

関連する問題