1

У меня есть лист, которому нужны отдельные ячейки для зеркального отображения отдельных ячеек на другом листе и наоборот, если он изменяется. Я нашел этот код на суперпользователя:

Для листа 1:

Private Sub Worksheet_change(ByVal Target as Range)
Sheets("Sheet2").Range("B7").Value = Target.Value
End Sub

Для листа 2:

Private Sub Worksheet_change(ByVal Target as Range)
If Sheets("Sheet1").Range("A4").Value <> Target.Value Then
Sheets("Sheet1").Range("A4").Value = Target.Value 
End if
End Sub

Но я не могу заставить его работать. Я получаю сообщение об ошибке:

Ошибка времени выполнения '9':

Индекс вне диапазона.

Отладка указывает на эту строку:

Sheets("Sheet2").Range("B7").Value = Target.Value

Что я делаю не так точно?

Спасибо!

1 ответ1

1

Предположим, я хочу отразить ячейку Sheet1.[A4] с ячейкой Sheet2.[B7]Я бы использовал следующее:


Лист1

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range) 'Sheet1 Module
    If Not Intersect(Target, [A4]) Is Nothing Then  'Update [B7] only when [A4] is updated
        MirrorCells Worksheets("Sheet2").[B7], Target
    End If
End Sub

Sheet2

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range) 'Sheet2 Module
    If Not Intersect(Target, [B7]) Is Nothing Then  'Update [A4] only when [B7] is updated
        MirrorCells Worksheets("Sheet1").[A4], Target
    End If
End Sub

Module1 (стандартный модуль)

Option Explicit

Public Sub MirrorCells(ByRef oldVal As Range, ByRef newVal As Range)
    If newVal.CountLarge = 1 Then   'Check that updated range is 1 cell (paste operations)
        If Not IsError(oldVal) And Not IsError(newVal) Then      'Ignore errors
            If oldVal <> newVal Then                'If oldVal needs to be updated
                Application.EnableEvents = False    'Stop all events
                oldVal.Value = newVal.Value         'Update it (triggers a new event)
                Application.EnableEvents = True     'Turn events back on
            End If
        End If
    End If
End Sub

Run-time error '9' генерируется, потому что у вас нет листа с именем "Sheet2"

Проверьте наличие лишних пробелов в имени вкладки, например "Sheet 2" , "Sheet2 " или " Sheet2"

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