向表中添加了列,但链接图表未使用新列数据更新

时间:2018-02-27 14:30:49

标签: excel vba excel-vba charts

我是新来的,我还没能找到答案。

我有一个年度商店收入工作簿,可以让我跟踪输入的收入/交易数据中的销售额和其他月/年数据。

我有一些VBA代码可以为新的一年创建一个新的工作表。 该代码还将新年数字添加到相关表格中,但链接到这些表格的图表不会随新数据一起更新。

我第一次运行这个代码,它适用于所有表格和图表。现在它偶尔适用于某些但不是全部,并且不总是相同的,并且通常不会更新任何图表。

我的代码是;

Dim NewPageName As String

Sub NewPage()

    Dim sName As String
    Dim wks As Worksheet

    'Unhides Master sheet

    Sheets("MASTER").Visible = True

    'Copies Master sheet & places copy after Graphs sheet

    Sheets("MASTER").Copy after:=Worksheets("Average Daily Till Diff")

    'Generates input box to name the new Sheet and checks duplicate names

    Set wks = ActiveSheet
    Do While sName <> wks.Name
        sName = Application.InputBox _
          (Prompt:="Enter New Year")
        On Error Resume Next
        wks.Name = sName
        On Error GoTo 0
    Loop
    Set wks = Nothing

    'Moves the data tables from new sheet to next empty column on to relavent data/graph sheets

    ActiveSheet.Range("D106:D107").Cut (Sheets("Total Yearly Takings").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Total Yearly Takings").Columns.AutoFit

    ActiveSheet.Range("D41:D53").Cut (Sheets("Total Monthly Takings").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Total Monthly Takings").Columns.AutoFit

    ActiveSheet.Range("D54:D66").Cut (Sheets("Average Daily Takings").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Average Daily Takings").Columns.AutoFit

    ActiveSheet.Range("D93:D105").Cut (Sheets("Average Daily Basket").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Average Daily Basket").Columns.AutoFit

    ActiveSheet.Range("D108:D109").Cut (Sheets("Total Yearly Till Diff").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Total Yearly Till Diff").Columns.AutoFit

    ActiveSheet.Range("D67:D79").Cut (Sheets("Total Monthly Till Diff").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Total Monthly Till Diff").Columns.AutoFit

    ActiveSheet.Range("D80:D92").Cut (Sheets("Average Monthly Till Diff").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Average Monthly Till Diff").Columns.AutoFit

    ActiveSheet.Range("D110:D111").Cut (Sheets("Average Daily Till Diff").Range("IV1").End(xlToLeft).Offset(, 1))
    Application.CutCopyMode = True
    Worksheets("Average Daily Till Diff").Columns.AutoFit

    'Hides the Master sheet

    Sheets("MASTER").Visible = False

End Sub

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

这是通过添加;

排序的
Private Sub Workbook_Open()

'Activate a Sheet
   Sheets("Average Daily Till Diff").Activate
   Sheets("Average Monthly Till Diff").Activate
   Sheets("Total Monthly Till Diff").Activate
   Sheets("Total Yearly Till Diff").Activate
   Sheets("Average Daily Basket").Activate
   Sheets("Average Daily Takings").Activate
   Sheets("Total Monthly Takings").Activate
   Sheets("Total Yearly Takings").Activate

End Sub

这使得工作簿在打开时循环显示包含图表的所有工作表,并允许原始代码添加新工作表并将该工作表数据添加到表和图表中。谢谢大家的帮助。