2016-07-11 6 views
0

"呼び出された"列のその行の値が別のシートの別のテーブルに "Y"に変更されたとき、最初のシートのテーブルのある行から値をコピーしようとしています。列は各表の間で一致しないので、どの列が他の表のどこにあるかを定義する必要があります。私は2番目のテーブルに新しい行を貼り付け、その値が "Y"に変更された行から値をコピーしたいだけです。これは私がやっていることを伝えるための私の最も簡単なコードですが、配列を含む多くのことを試しました。 "Table1"は最初のシート "Master"にあり、Table2は2番目のシート "Called List"にあります。セルの変更時にテーブル間の値をコピー

EDIT:これは私の新しいコードで、 "Table2"の正しい列に値をコピーするのに成功しますが、 "Called"が "Y"に変更された現在行の代わりにすべての行がコピーされます。 "Table1"の "Y"が挿入されている行だけ "Table2"の新しい行にコピーする方法はありますか?

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(" Table1 [Called] ")))がNothingであることを達成しようとしているものが得られません。その特定のテーブルに 'KeyCells'を設定していませんか?あなたは 'Target'の範囲と交差するべきではありませんか? – nbayly

+0

エラーはありません。ただ実行されません。何が問題なのかわからないので、エラーよりもイライラします。 – SoySauceWDF

答えて

0

Y 『は「表1表2『の行だけ』『の新しい行にコピーする方法がある』』挿入されているの?」

1)"Target.Row"あなた "ワークシート(" マスター ")。レンジ(" 表1 [注意]で使用し、マスターシート上の基準行である ")。バリュー" なステートメント

2)"NewRow"は "呼び出されたリスト"シートの参照行です。 "ワークシート("呼び出されたリスト ")**セル(Range(" Table2 [Lessor] ")あなたは表を変換する場合

3)[...]あなたのようなものを使用することができます名前付き範囲に:?

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

Ex。名前付き範囲の:

"表1 [貸手]は" 'T1_Lessor' になるには(!$のB)、1 'マスター' $ B $ 2,0,0、COUNTA( 'マスター' の$ B)= OFFSET

は、 "表2 [貸手は]" 'T2_Lessor' =オフセットなり( 'と呼ばれるリストを' $ B $ 2,0,0、COUNTAを( 'と呼ばれるリスト' $ B!:$のB)、1)

関連する問題