2014-09-25 84 views
0

我有一个Excel文档。Excel VBA每个新工作表的副本数据

我的问题是:每次创建新文档时,都需要移动数据。还会自动汇总数据。 表1是我的总结。

假设我有一个名为“sum”的列,而在sheet2中我有一个列的价格。如果我在工作表2中设置价格A1 = 1(int),则应将其发送到工作表1(摘要)中的列总和。如果我然后复印工作表2并创建工作表3并在工作表3的价格中插入值1,则它将在工作表1(摘要)中结束。总和shuld然后在第1页2. 有没有办法做到这一点?

回答

0

请把它放在VBAProject - > ThisWorkbook。 每次保存文件更改时它都会自动更新。如果你想让它适用于多个单元格,你只需要在评论处添加循环。

Private Sub Workbook_AfterSave(ByVal Success As Boolean) 

    Dim wb As Workbook 
    Set wb = ActiveWorkbook 

    Dim wbSize As Integer 
    wbSize = wb.Sheets.Count 

    Dim Sum As Long 

    ' Open loop to apply to more than only 1 cell 
    Sum = 0 

     For i = 2 To wbSize 

      Sum = Sum + wb.Sheets(i).Cells(1, 1).Value 

     Next 

    wb.Sheets(1).Cells(1, 1) = Sum 
    ' Close the loop 

End Sub 
+0

我tryed复制Sheet2中的contctent并创造轩泰1(摘要)的总和电池板3这是代码:= Sheet2的J73 我tryed添加您的代码,但它没有更新。而且很可能是因为= sheet2!J73。 – user2053451 2014-09-25 13:00:17

+0

你保存了文件吗?如您所见,每次保存更改时,Excel都会运行代码。此外,除了“ThisWorkbook”模块的代码外,不需要添加任何内容。 – PolaEla 2014-09-25 13:06:22

+0

您可以随时将'Workbook_AfterSave(ByVal Success As Boolean)'更改为'Workbook_SheetSelectionChange(ByVal Sh As Object,ByVal Target As Range)'。这将使您每次通过电子表格进行搜索时都会自行更新。但是如果数据量很大,它可能会减慢整个应用程序的速度。 – PolaEla 2014-09-25 13:10:05

相关问题