Worksheet_Change Событие, дающее ошибку времени выполнения 13 - Несоответствие типов при вставке строк - PullRequest
4 голосов
/ 22 марта 2012

Я использую Excel VBA и у меня есть событие worksheet_change:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target = Range("rel_type") Then
       --some code
    End If
End Sub

Этот код прекрасно работает, когда я изменяю именованный диапазон "rel_type". Однако, если я вставлю строку где-нибудь еще в электронную таблицу, я получу ошибку времени выполнения 13 - несоответствие типов в первой строке этого Sub. Кто-нибудь знает обходной путь? Я не очень знаком с событием Worksheet_Change и, похоже, не могу найти хорошую документацию (или, по крайней мере, документацию, которая ссылается на причину этой ошибки). Спасибо.

1 Ответ

5 голосов
/ 22 марта 2012

Это то, что вы пытаетесь?

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Whoa

    If Not Intersect(Target, Range("rel_type")) Is Nothing Then
       Application.EnableEvents = False

       '--some code
    End If

LetsContinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

Followup

Да, это именно то, что мне было нужно! Спасибо! Оно работало завораживающе. Я не был знаком с Intersect или опцией EnableEvents, поэтому я многому научился здесь - я ценю это. - rryanp 16 секунд назад

INTERSECT : Метод пересечения вернет объект Range, представляющий пересечение двух или более диапазонов.

см. Ссылку

Тема: Метод пересечения [Справочник по языку VBA в Excel 2003]

Ссылка : Пересечение - MSDN

ENABLEEVENTS : необходимо использовать свойство EnableEvents, чтобы предотвратить возможные бесконечные циклы, которые может инициировать код VBA. Если для этого свойства установлено значение False, VBA не будет вызывать никаких событий, а событие Worksheet_Change будет запускаться только один раз. Кроме того, вы всегда должны обязательно устанавливать для свойства EnableEvents значение True, чтобы в следующий раз нормально вызывать события.

НТН

Sid

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