vba - Excel VBA : unable to disable DisplayAlert during drag+drop?

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

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

关于vba - Excel VBA : unable to disable DisplayAlert during drag+drop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42419908/

相关文章:

regex - 如何使用正则表达式将 VBA 中的多个空格替换为单个空格?

excel - 跨多个工作簿对同一单元格求和

VBA通过循环读取Excel中的两列

Excel 2010 宏有运行时错误 -2147467259 (80004005) : Invalid parameter

ios - UIAlertView 在调用 loginButton 操作后出现太短

vba - 在每行后插入 n 个空白单元格的代码非常慢

mysql - AVG(TIMESTAMPDIFF) mySQL 返回错误答案

excel - VBA - 获取最后添加的工作表的名称

javascript - 事件和 Action 是否有 1 :1 relationship in Redux?

php - 混合 POST 和 GET 时表单操作中的查询字符串?