Событие Workbook_SheetChange срабатывает дважды, когда не должно - PullRequest
0 голосов
/ 11 октября 2019

Ниже код, который использовался некоторое время, больше не работает.

Я провел тест на новом листе без другого кода с тем же результатом.

Мы недавно переехалив 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

1 Ответ

1 голос
/ 11 октября 2019

вы можете попытаться превратить его в 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 и всех его последствий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...