【问题标题】:Excel VBA copy data for each new sheet每个新工作表的 Excel VBA 复制数据
【发布时间】:2014-09-25 11:51:20
【问题描述】:

我有一个 Excel 文档。

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

假设我有一个名为“sum”的列,在 sheet2 中我有一个列价格。如果我在表 2 中设置价格 A1 = 1(int),它将被发送到表 1(摘要)中的总和列。如果我然后复制表 2 并创建表 3 并在表 3 的价格中插入值 1,它将最终出现在表 1(摘要)中。然后在表 1 中总和应为 2。 有没有办法做到这一点?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    请将其放在 VBAProject -> ThisWorkbook 中。 每次保存文件更改时,它都会自行更新。如果您希望它适用于超过 1 个单元格,您只需要添加循环来代替 cmets。

    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
    

    【讨论】:

    • 我试图复制 sheet2 的内容并创建 sheet 3。在 shete 1(摘要)的总和单元格中,这是代码:=Sheet2!J73 我尝试添加您的代码,但它没有更新.很可能是因为 = sheet2!J73。
    • 你保存文件了吗?如您所见,每次保存更改时 Excel 都会运行代码。此外,除了“ThisWorkbook”模块的代码之外,无需在任何地方添加任何内容。
    • 您始终可以将“Workbook_AfterSave(ByVal Success As Boolean)”更改为“Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)”。每次搜索电子表格时,这将使 excel 自行更新。但是对于大量数据,它会降低整个应用程序的速度。
    • 认为问题是,当我将 sheet2 复制到 sheet3 时。我像这样将价格整数发送到表 1。 =sheet2!J73。如果我然后复制工作表,它不会对 Sheet1 有任何引用。只有 sheet2 有 taht refrance。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2016-11-19
    相关资源
    最近更新 更多