2017-02-23 11 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을 선택하는 사용자를 잡는다면 Mark가 팝업을 사용하지 않도록 설정하려고합니다. - – CLR

+0

CLR로 드래그하기 전에 올바른 것입니다. E1로 드래그하기 전에 D1이 선택된 경우에만 팝업을 비활성화하고 싶습니다. Fajka, 나는 단지 킥에 대한 당신의 제안을 시도했지만 아무런 효과가 없었습니다. –