Я почти закрыл этот вопрос как дубликат.
Я отвечу на оба ваших вопроса, но в обратном порядке, чтобы вы могли лучше понять его.
Почему запускается тест?событие изменения?
Я объяснил это в SpecialCells, вызывающей событие SheetSelectionChange в Excel 2010
Когда я запускаю подпрограмму test (), я получаю несоответствие типовошибка при отсутствии пересечения (цель, диапазон («K: M»)) - ничто, так как цель неверного типа.Почему это происходит?
Когда процедура Test
вызывает событие Worksheet_SelectionChange
, ваш код завершится ошибкой в строке
If Not Intersect(Target, Range("K:M")) Is Nothing And Target.Value <> "" Then
Это потому, что Target.Value <> ""
виновник как SpecialCells(xlCellTypeBlanks).Count
может вернуть несколько ячеек.
Если разбить вышеуказанную строку на 2 строки, вы не получите ошибку
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("K:M")) Is Nothing Then
If Target.Value <> "" Then
'code
End If
End If
End Sub