2016-07-11 2 views
0

Я пытаюсь скопировать значения из одной строки таблицы на первом листе, когда значение в этой строке в столбце «Вызывается» заменено на «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 
+0

Что это проблема или сообщение об ошибке с вашим текущим кодом? – nekomatic

+0

Я не понимаю, что вы пытаетесь выполнить с помощью 'If Not Application.Intersect (KeyCells, Range (« Таблица1 [Вызывается] »))« Ничего ». Разве вы не установили «KeyCells» в эту конкретную таблицу? Если вы не проверяете пересечение с диапазоном «Target»? – nbayly

+0

Ошибок нет, он просто не запускается, что более расстраивает, чем ошибки, потому что я не знаю, что случилось. – SoySauceWDF

ответ

0

«Есть ли способ, чтобы скопировать на новую строку на„Table2“только в строке„Table1“, где„Y“вставляется?»

1) "Target.Row" ваша ссылка строки на главном листе, использовать его в "Таблицах (" Мастер "). Range (" Table1 [Примечания] "). Значение" Постулаты

2) «NewRow» - ваша ссылочная строка на листе «названный список», используйте ее в своих «Рабочих листах» («Выбранный список») **. Ячейки (диапазон («Таблица2 [Арендодатель]»).

3) Если преобразовать таблицу [...] именованные диапазоны вы можете использовать что-то вроде:

Range("T2_Lessor").Cells(NewRow).Value = Range("T1_Lessor").Cells(KeyCells.Row).Value 

Ex. именованного диапазона:

"Table1 [Арендодатель]" становится = 'T1_Lessor' OFFSET ('Master' $ B $ 2,0,0, COUNTA ('Мастер' $ B:! $ B), 1)

"Table2 [Арендодатель]" становится = 'T2_Lessor' OFFSET ('Called List' $ B $ 2,0,0, СЧЁТЗ ('Вызывается List' $ B:! $ B), 1)

Смежные вопросы