2017-08-24 8 views
1

私の主なブック(main.xlsm)sheet1 "A1"セルに更新があるときは、そのデータ行全体をコピーする必要があります別のExcelに変換します(work.xlsm)。メインシートにはAからMまでの列があり、データの取り込みはA1セルのデータ変更に依存します。すべてのデータは2番目のExcelで保存され、新しいデータはすべて次の行に追加されます。Excelの列全体を別のセルにコピーするには

すべてのデータを保存する必要がある2番目のブック(working.xlsm)に以下のコードを追加しましたが、動作しません。 working.xlsm年代の最初の空白行にmain.xlsmのM1:私はmain.xlsm上のシートに置く場合は、このコードでは、A1をコピーします

Private Sub Worksheet_Calculate() 

With Sheet1 
    With .Cells(.Rows.Count, "B").End(xlUp) 
     If .Value <> Workbooks("main.xlsm").Worksheets("Sheet1").Range("A1").Val‌ue Then 
      .Offset(1).Value = Sheet1.Range("A:M").Value 
     End If 
    End With 
End With 

End Sub 
+0

ステートメントがネストされている必要はありません。 Sheet1.Cells(Sheet1.Row.Count、 "B")。End(xlUp) 'を使用するだけです。また、Sheet1を定義しない – sourceCode

+0

また、それを参照するために "main.xlsm"ブックを開いておく必要があります – sourceCode

+0

メインのワークブックで変更が発生していることを確認している場合は、このコードをその内部に置く必要があります。 –

答えて

1

with機能付き範囲を使用する方法がわかりませんシートのA1が変更されるたびにSheet1。これは、参照用にworking.xlsmが現在開いていることを前提としています。

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim ws As Worksheet 
Set ws = Workbooks("working").Sheets("Sheet1") 
If Not Intersect(Target, Range("A1")) Is Nothing Then 
    Range("A1:M1").Copy 
    ws.Range("A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1).PasteSpecial xlPasteValues 
End If 
End Sub 

これはあなたが探していたものですか?

+0

ありがとうございます。 A1:M1の値だけを作業シートに貼り付けるにはどうすればいいですか?メインシートには数式が含まれていますが、コピーする値のみが必要です – acr

+0

私の答えを更新します。 –

+0

A1で数式を使用している間、まだいくつかの問題があります。https://www.dropbox.com/sh/haxoxgtldqmdcxe/AAB5_SG95Woho6wnB8X4ynUIa?dl=0 – acr

関連する問題