ОБНОВЛЕНИЕ (вопрос перефразирован)

У меня есть 2 разных Private Sub (в ThisWorkbook). Каждый работает нормально "в одиночку". Тем не менее, когда они оба активированы, я получаю vba error 1004 method intersect of object _global failed ошибка, возникающая ошибка, если я щелкаю по любой ячейке, намеченной в PS # 2 (C20:C200).

Выделенная строка кода при нажатии на "отладка" находится в PS # 1:

    If Not Intersect(Target, Range("RSTcabFINISHING")) Is Nothing Then

Что я должен сделать, чтобы оба сабвуфера работали вместе?

ЧАСТНЫЙ СУБ № 1

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Initialize cabinet finishing board
If testrange("RSTcabFINISHING") Then
    If Not Intersect(Target, Range("RSTcabFINISHING")) Is Nothing Then
        Target.Offset(0, 1).Resize(, 3).ClearContents
    End If
End If

If testrange("RSTcabMATERIAL") Then
    If Not Intersect(Target, Range("RSTcabMATERIAL")) Is Nothing Then
        Target.Offset(0, 1).Resize(, 3).ClearContents
    End If
End If

Application.EnableEvents = True
End Sub

ЧАСТНЫЙ СУБ № 2

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'AUTO COMPLETE - initialize the script (to 0) each time a cell is selected in col "C")
If Selection.Count = 1 Then
    If Not Intersect(Target, Range("C20:C200")) Is Nothing Then
         Worksheets("HARD").Range("AUTOCOMPhardwareVBASCRIPT").Value = 0
         Worksheets("ACC-ST").Range("AUTOCOMPaccessoriesSTVBASCRIPT").Value = 0
         Worksheets("ACC-SP").Range("AUTOCOMPaccessoriesSPVBASCRIPT").Value = 0
    End If
End If
End Sub

Важная точка:

  • У меня есть функция "testrange", которая проверяет, существует ли целевой диапазон в ActiveSheet (помещен в модуль), никаких проблем нет ...
  • Я не хочу определять имя листа в PS # 1, потому что этот лист может нуждаться в дублировании.

1 ответ1

0

В вашем утверждении « If Not Intersect(Target, Range("C20:C200")) Is Nothing Then явно укажите, на каком листе находится диапазон («C20:C200»).
Пример: If Not Intersect(Target, YourSheetHere.Range("C20:C200")) Is Nothing Then

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .