Create several charts in one go using VBA

A

andreashermle

Dear Experts:

below code creates a simple bar chart from a list (defined as table1)
on sheet 2.
I got several lists on sheet 1, all of them defined as tables, that is
Table2, Table3, and Table4

Is it possible to loop thru all these lists (defined as tables) in
sheet 2 and have the same bar chart created from all these lists
(defined as table1, table2, table3 and table4) in one go using VBA.

Help is very much appreciated. Thank you very much in advance.

Regards, Andreas

All of the charts should have the same Diagramm Title ($B$6)

Sub AddBarChart()
Dim myChtObj As ChartObject

Set myChtObj = ActiveSheet.ChartObjects.Add _
(Left:=100, Width:=400, Top:=75, Height:=200)

With myChtObj.Chart
.SetSourceData Source:=Sheets("Sheet2").Range("Table1")
.ChartType = xlBarClustered
.HasLegend = False
.Axes(xlCategory).MajorTickMark = xlNone
.SeriesCollection(1).ApplyDataLabels
.SeriesCollection(1).DataLabels.Position =
xlLabelPositionInsideEnd
With .Axes(xlValue)
.MinimumScale = 0
.MaximumScale = 10
.Delete
.MajorGridlines.Delete
End With

End With

With myChtObj.Chart
.SetElement (msoElementChartTitleAboveChart)
.ChartTitle.Text = "=Sheet2!$B$6"
End With


With myChtObj.Chart.Parent
.Top = Range("A7").Top
.Left = Range("E7").Left
.Name = "Chart1"
End With
 
D

Don Guillett Excel MVP

Dear Experts:

below code creates a simple bar chart from a list (defined as table1)
on sheet 2.
I got several lists on sheet 1, all of them defined as tables, that is
Table2, Table3, and Table4

Is it possible to loop thru all these lists (defined as tables) in
sheet 2 and have the same bar chart created from all these lists
(defined as table1, table2, table3 and table4) in one go using VBA.

Help is very much appreciated. Thank you very much in advance.

Regards, Andreas

All of the charts should have the same Diagramm Title ($B$6)

Sub AddBarChart()
Dim myChtObj As ChartObject

    Set myChtObj = ActiveSheet.ChartObjects.Add _
        (Left:=100, Width:=400, Top:=75, Height:=200)

        With myChtObj.Chart
            .SetSourceData Source:=Sheets("Sheet2").Range("Table1")
            .ChartType = xlBarClustered
            .HasLegend = False
            .Axes(xlCategory).MajorTickMark = xlNone
            .SeriesCollection(1).ApplyDataLabels
            .SeriesCollection(1).DataLabels.Position =
xlLabelPositionInsideEnd
                With .Axes(xlValue)
                     .MinimumScale = 0
                     .MaximumScale = 10
                     .Delete
                     .MajorGridlines.Delete
                End With

        End With

        With myChtObj.Chart
            .SetElement (msoElementChartTitleAboveChart)
            .ChartTitle.Text = "=Sheet2!$B$6"
        End With

        With myChtObj.Chart.Parent
            .Top = Range("A7").Top
            .Left = Range("E7").Left
            .Name = "Chart1"
        End With

"If desired, send your file to dguillett @gmail.com I will only look
if:
1. You send a copy of this message on an inserted sheet
2. You give me the newsgroup and the subject line
3. You send a clear explanation of what you want
4. You send before/after examples and expected results."
 
A

andreashermle

"If desired, send your file to dguillett  @gmail.com I will only look
if:
1. You send a copy of this message on an inserted sheet
2. You give me the newsgroup and the subject line
3. You send a clear explanation of what you want
4. You send before/after examples and expected results."- Hide quoted text -

- Show quoted text -

Hi Don,

what a service! Will do the requested shorty.

Thank you. Regards, Andreas
 
J

Jon Peltier

Pseudocode:

For i=1 to 10
Set myChtObj = ... (choose position so no overlapping charts)
myChtObj.Chart.SetSourceData Source:= (appropriate i'th range)
Next

- Jon
 
A

andreashermle

Pseudocode:

For i=1 to 10
   Set myChtObj = ... (choose position so no overlapping charts)
   myChtObj.Chart.SetSourceData Source:= (appropriate i'th range)
Next

- Jon
-------
Jon Peltier
Peltier Technical Services, Inc.http://peltiertech.com/














- Zitierten Text anzeigen -

Hi Jon,

thank you very much for your great help. I could incorporate your code
snippets. It works.

Thank you.

Regards, Andreas
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top