Построить пару зеркальных ячеек в двух разных листах

Я пытаюсь создать пару ячеек на двух разных листах моей книги, так что все, что вы входите в одну ячейку, копируется в другую. Если бы это был один из способов, это, очевидно, было бы тривиальным. Я хочу сделать так, чтобы ссылка была двусторонней. Это будет связано с сценариями VBA, и я в этом начинаю. Есть ли у кого-нибудь указания относительно того, как узнать, что мне нужно знать? У меня есть Googled, но это просто создало некоторые примеры кода без объяснения причин, и я не хочу вводить код, который я не понимаю.

Предположим, у вас есть Sheet1 и Sheet2, и их имена именно таковы.

  1. В Sheet1 перейдите в раздел «Разработчик» и нажмите «Просмотреть код». Вы должны смотреть на пустой лист кодирования для Sheet1
  2. В левой нижней части области кодирования выберите Рабочий лист вместо стандартного (Общий)
  3. Справа выпадаете. выберите «Изменить». Вам автоматически будет предоставлено следующее:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub 

Изменения в любой ячейке в Sheet1 вызовут код выше.

Ячейка, которая была изменена, называется целевым диапазоном.

Вы можете легко определить адрес и содержимое целевого диапазона с помощью Target.Address и Target.Value. Затем вы можете использовать этот адрес и значение для обновления Sheet2.

 Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Sheets("Sheet2").Range(Target.Address).Value = Target.Value End Sub 

Чтобы скопировать данные из Sheet2 в Sheet1, просто повторите шаги выше, но на Sheet2.

 Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value End Sub 

Однако, если изменение в Sheet1 вызовет изменение в Sheet2, что, в свою очередь, вызовет изменение в Sheet1, изменения произойдут в течение неопределенного времени, что не имеет смысла. Поэтому нам нужно добавить некоторый код для применения изменения только тогда, когда значения на листах Sheet1 и Sheet2 различны. Если значения одинаковы, нет необходимости применять изменения. Поэтому код Sheet2 должен выглядеть следующим образом:

 Private Sub Worksheet_Change(ByVal Target As Range) If ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value <> Target.Value Then ThisWorkbook.Sheets("Sheet1").Range(Target.Address).Value = Target.Value End If End Sub 

Для этого вы должны использовать пару макросов событий . Вот пример, который вы можете адаптировать:

зеркальные изменения

Давайте будем гением компьютера.