Я пытаюсь использовать код VB из этого вопроса в Excel 2013, и он не работает. Я не знаком с VB и, скорее всего, пропускаю простой шаг.
Private Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "sheet1" Or UCase(Sh.Name) = "sheet2" Then
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1") = Target
Else
Sheets("Sheet1").Range("A1") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub
Используя новую рабочую книгу с листами Sheet1 и Sheet2, я попробовал следующее в Visual Basic:
- вставка кода в объект: ThisWorkbook
- вставка кода в объекты: Sheet1 (Sheet1) и Sheet2 (Sheet2)
- вставка кода во все 3 объекта
- Обеспечение сохранения рабочей книги в качестве макроса
- убедитесь, что для параметров безопасности книги задан доверительный доступ к объектной модели VBA и включены макросы
Что мне нужно сделать, чтобы запустить этот код?
В ответ на предложение Мэтса Кружка:
Я поместил код в стандартный модуль, как вы предложили, изменил процедуру на Public и изменил диапазон. Тем не менее, я до сих пор не могу заставить его скопировать значения из диапазона на одном листе на другой. Код выглядит сейчас так:
Public Sub Workbook_TwoWayMatch(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = "SHEET1" Or UCase(Sh.Name) = "SHEET2" Then
If Not Application.Intersect(Target, Range("A1:J23")) Is Nothing Then
Application.EnableEvents = False
If UCase(Target.Parent.Name) = "SHEET1" Then
Sheets("Sheet2").Range("A1:J23") = Target
Else
Sheets("Sheet1").Range("A1:J23") = Target
End If
Application.EnableEvents = True
End If
End If
End Sub