Ваш код для перемещения строки с рабочего листа xDepartment на рабочий лист архива содержит строку,
Selection.EntireRow.Select
Это делает рабочий лист xDepartment активным.Код для фактического перемещения строки и удаления оригинала ничего не делает для изменения xDepartment в качестве ActiveSheet.
With Selection
.Copy Destination:=sht2.Range("A" & lastRow + 1)
.EntireRow.Delete
End With
В вашем рабочем листе_change у вас есть
Set WorkRng = Intersect(Application.ActiveSheet.Range("O:O, Q:Q"), Target)
Итак, ваш рабочий лист архиваWorksheet_Change попытается поработать с рабочим листом xDepartment.
Но вы удалили строку, чтобы она больше не существовала;hen ce:
Ошибка времени выполнения '13': несоответствие типов
Установите WorkRng с помощью,
Set WorkRng = Intersect(Range("O:O, Q:Q"), Target)
Это в частномподпроцедура в личном кодовом листе архива, поэтому нет необходимости указывать родительский рабочий лист, если вы не хотите специально работать с другим рабочим листом.
Избегайте использования ActiveSheet, Select, Selection и Activate, когда это возможно, и никогда не используйте их в закрытом кодовом листе рабочего листа для ссылки на этот рабочий лист.