2017-08-24 24 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

相关问题