2017-08-24 27 views
1

我的需求是每當我的主工作簿(main.xlsm)sheet1「A1」單元有更新時,我需要複製整行數據轉換成另一個excel(比如working.xlsm)。主表有從A到M的列,並且數據捕獲應取決於A1單元格數據更改。所有數據都保存在第二個excel中,所有新數據將被添加到下一行。將excel的整個列複製到另一個取決於單元格值的更改

我已將下面的代碼添加到我的第二個工作簿(working.xlsm)中,我需要保存所有數據,但它不起作用。我不知道如何使用範圍與with功能

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

嵌套語句是不必要的。只需使用'With Sheet1.Cells(Sheet1.Row.Count,「B」)。End(xlUp)'。你也沒有定義Sheet1 – sourceCode

+0

你也必須打開「main.xlsm」工作簿來引用它,就像那樣 – sourceCode

+0

如果你正在觀看主工作簿中發生的變化,你應該把這個代碼放在裏面。 –

回答

1

這段代碼,如果擺在main.xlsm紙,拷貝A1:main.xlsm M1到working.xlsm的的第一個空行Sheet1每當表單的A1被改變時。這假定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

相關問題