Я пытаюсь скопировать значения из одной строки таблицы на первом листе, когда значение в этой строке в столбце «Вызывается» заменено на «Y» на другую таблицу на другом листе , Столбцы не совпадают между каждой таблицей, поэтому мне нужно определить, какой столбец находится в другой таблице. Я хочу сделать новую строку во второй таблице, чтобы вставлять и копировать только значения из строки, для которой значение было изменено на «Y». Это мой самый простой код, чтобы передать то, что я делаю, но я пробовал много вещей, включая массив. «Таблица1» находится на первом листе «Мастер», Таблица 2 находится на втором листе «Выбранный список».Копирование значений между таблицами при изменении ячейки
EDIT: Это мой новый код, он успешно копирует значения в соответствующие столбцы на «Таблица2», но копирует все строки вместо текущей строки, где «Вызывается» изменяется на «Y». Есть ли способ скопировать в новую строку на «Table2» только строку в «Table1», где вставлен «Y»?
Private Sub Worksheet_Change(ByVal Target As Range)
'Application.ScreenUpdating = False
Application.EnableEvents = False 'to prevent endless loop
Dim KeyCells As Range
Dim NewRow As ListRow
Set KeyCells = Range("Table1[Called]")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
If Target.Value = "Y" Then
Set NewRow = Worksheets("Called List").ListObjects("Table2").ListRows.Add '(AlwaysInsert:=True)
Worksheets("Called List").Range("Table2[Lessor]").Value = Worksheets("Master").Range("Table1[Lessor]").Value
Worksheets("Called List").Range("Table2[Phone]").Value = Worksheets("Master").Range("Table1[Phone Number]").Value
Worksheets("Called List").Range("Table2[Address]").Value = Worksheets("Master").Range("Table1[Address]").Value
Worksheets("Called List").Range("Table2[Sec]").Value = Worksheets("Master").Range("Table1[Sec]").Value
Worksheets("Called List").Range("Table2[Twn]").Value = Worksheets("Master").Range("Table1[Twn]").Value
Worksheets("Called List").Range("Table2[Rng]").Value = Worksheets("Master").Range("Table1[Rng]").Value
Worksheets("Called List").Range("Table2[County]").Value = Worksheets("Master").Range("Table1[County]").Value
Worksheets("Called List").Range("Table2[Legal Desc]").Value = Worksheets("Master").Range("Table1[Tract]").Value
Worksheets("Called List").Range("Table2[Gross Acres]").Value = Worksheets("Master").Range("Table1[Gross Acres]").Value
Worksheets("Called List").Range("Table2[Assumed NMA]").Value = Worksheets("Master").Range("Table1[Assumed NMA]").Value
Worksheets("Called List").Range("Table2[Comments]").Value = Worksheets("Master").Range("Table1[Notes]").Value
End If
End If
Application.EnableEvents = True
'Application.ScreenUpdating = True
End Sub
Что это проблема или сообщение об ошибке с вашим текущим кодом? – nekomatic
Я не понимаю, что вы пытаетесь выполнить с помощью 'If Not Application.Intersect (KeyCells, Range (« Таблица1 [Вызывается] »))« Ничего ». Разве вы не установили «KeyCells» в эту конкретную таблицу? Если вы не проверяете пересечение с диапазоном «Target»? – nbayly
Ошибок нет, он просто не запускается, что более расстраивает, чем ошибки, потому что я не знаю, что случилось. – SoySauceWDF