При создании проекта, предназначенного для общей рабочей книги (пожалуйста, не стоните слишком громко), я заметил кое-что довольно странное с событием 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
Заранее спасибо.