Событие Worksheet_Change и общие книги - PullRequest
0 голосов
/ 05 октября 2018

При создании проекта, предназначенного для общей рабочей книги (пожалуйста, не стоните слишком громко), я заметил кое-что довольно странное с событием Worksheet_change относительно целевого адреса.

, чтобы выделить этоЗатем создайте новую рабочую книгу и добавьте следующий код.

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
MsgBox (Target.Address(0, 0))
Application.EnableEvents = True

End Sub

Когда событие инициируется путем добавления данных в новую строку и рабочая книга не является общей, отображается сообщение с соответствующим адресом ячейки, как и ожидалось.Тем не менее, когда рабочая книга используется совместно и выполняется один и тот же процесс, событие запускается дважды.

Пропуск 1 возвращает окно сообщения, в котором отображается адрес, эквивалентный

 Target.row:Target.row

Проход 2 возвращает ожидаемый адрес ячейки.

Между прочим, этот результат первого прохождения, вероятно, является причиной того, что люди испытывают ошибку

во время выполнения 13 - Несовпадение типов

Хотя это можно преодолеть с помощью следующего кода (или аналогичного), мне было интересно, знает ли кто-нибудь, почему вообще происходит Пропуск 1?

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False        
    If Target.Address(0, 0) <> Target.Row & ":" & Target.Row Then
        MsgBox (Target.Address(0, 0))
    End If    
    Application.EnableEvents = True

End Sub

Заранее спасибо.

...