Excel 工作簿"SheetChange事件在不应';T

Excel 工作簿"SheetChange事件在不应';T,excel,vba,Excel,Vba,下面的代码已经使用了一段时间,现在已经不起作用了 我在新工作表中做了一个测试,没有其他代码,结果相同 我们最近搬到了Office 365,我当前的Excel版本是1902。 不幸的是,现在这里的每个人都有相同的版本,因此我无法在旧版本上进行测试。 我提到这一点是因为我想不出任何事情,但这是由于一个新的错误 编辑:我应该补充一点,这是用来防止(重新)移动行或列的 编辑:什么不起作用:它每次触发两次。(经过几次编辑后,我省略了这个重要部分) 您可以尝试将其转换为SelectionChange事件 P

下面的代码已经使用了一段时间,现在已经不起作用了

我在新工作表中做了一个测试,没有其他代码,结果相同

我们最近搬到了Office 365,我当前的Excel版本是1902。
不幸的是,现在这里的每个人都有相同的版本,因此我无法在旧版本上进行测试。
我提到这一点是因为我想不出任何事情,但这是由于一个新的错误

编辑:我应该补充一点,这是用来防止(重新)移动行或列的

编辑:什么不起作用:它每次触发两次。(经过几次编辑后,我省略了这个重要部分)


您可以尝试将其转换为
SelectionChange
事件

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    If ((Target.Address = Target.EntireRow.Address Or _
    Target.Address = Target.EntireColumn.Address)) Then

        With Application
            .EnableEvents = False
            Target.Cells(1, 1).Select
            .EnableEvents = True
        End With
        MsgBox "Do not modify the structure.", vbExclamation, "Notice"

    End If

End Sub

这将使您避免在my Office 365 ProPlus Excel版本1902 build 11328.20420中使用
撤消
及其所有后果

当您说:不再工作了,这是什么意思?它会抛出错误吗?运行但什么也没发生?@Zac哦,天哪,我在发布之前无意中删除了它。它只会触发两次,第一次
Undo
删除用户所做的操作,第二次恢复。我认为@DisplayName建议应该适合您
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    If ((Target.Address = Target.EntireRow.Address Or _
    Target.Address = Target.EntireColumn.Address)) Then

        With Application
            .EnableEvents = False
            Target.Cells(1, 1).Select
            .EnableEvents = True
        End With
        MsgBox "Do not modify the structure.", vbExclamation, "Notice"

    End If

End Sub