Forum Discussion

AdamWojcik's avatar
AdamWojcik
Copper Contributor
Jul 10, 2021

Copy charts from all sheets to one

I have written a macro that looks like this:     Sub CopyCharts() Dim Sheet_Count As Integer Dim Target_Sheet As Worksheet Dim i As Integer Sheet_Count = ActiveWorkbook...
  • HansVogelaar's avatar
    Jul 10, 2021

    AdamWojcik 

    1) You have two For loops, but only one Next.

    2) You declare a variable Target_Sheet.

    3) You don't use the keyword Set to assign Target_Sheet

    3) You try to paste to the undefined variable ChartSheet

    4) You try to paste to a string instead of a range.

    5) Chart is not a good name for a variable, since it is the name of a built-in object.

     

    Here is a working version:

    Sub CopyCharts()
         Dim Sheet_Count As Integer
         Dim Target_Sheet As Worksheet
         Dim i As Integer
         Dim Cht As ChartObject
         
         Sheet_Count = ActiveWorkbook.Sheets.Count
         Set Target_Sheet = ActiveWorkbook.Sheets(1)
         
         For i = 2 To Sheet_Count
            For Each Cht In ActiveWorkbook.Sheets(i).ChartObjects
                Cht.Copy
                Target_Sheet.Paste Target_Sheet.Range("D4")
            Next Cht
         Next i
    End Sub

    6) All charts will be pasted more or less on top of each other

Resources