下面使用了一段时间的代码不再起作用。
我在没有其他代码的情况下在新工作表中进行了测试,结果相同。
我们最近已移至Office 365,我当前的Excel版本是1902。
不幸的是,这里的每个人现在都有相同的版本,因此我无法在较旧的版本上进行测试。
我之所以这样提,是因为我什么也没想,这是由于一个新的错误引起的?
编辑:我应该补充一点,这是用来防止(重新)移动行或列。
编辑:不起作用:每次触发两次。(我在几次编辑后都忽略了这一重要部分)
Private Sub Workbook_SheetChange(ByVal wks As Object, ByVal Target As Range)
If ((Target.Address = Target.EntireRow.Address Or _
Target.Address = Target.EntireColumn.Address)) Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
MsgBox "Do not modify the structure.", vbExclamation, "Notice"
End With
End If
End Sub
答案 0 :(得分:1)
您可以尝试将其变成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
这将使您免受Undo
的使用及其所有后果的影响