Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 18
Default Making charts

I am writing a macro that generates several chart from info that is placed in
a worksheet. The code I am writing has to be very dynamci so I cannot record
a macro etc. I want to create several chart types first e.g. one type of
chart that has some settings and borders etc. I then want to make e.g. three
charts (with different input) of one type of chart and four of another type.
Does anyone hve any idea how to make this? I know it is a big question but
please please help me! I am not very good a visual basic so please explain if
necessary...Thank you!
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 30
Default Making charts

I usually just record a macro and create variable for the things that need to
be changed. Strings can be used to create the Xvalues and ranges based on
your program flow.

recorded macro for Line chart and XY scatter:

Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("FIRST TABLE").Range("A3:B22"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "='FIRST TABLE'!R3C1:R22C1"
ActiveChart.SeriesCollection(2).XValues = "='FIRST TABLE'!R3C1:R22C1"
ActiveChart.Location Whe=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "test"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "stuff"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "other stuff"
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Select
Selection.Position = xlBottom
ActiveChart.HasDataTable = False
Sheets("FIRST TABLE").Select


Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("FIRST TABLE").Range("A3:B22"), _
PlotBy:=xlColumns
ActiveChart.Location Whe=xlLocationAsNewSheet
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "title"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "stuff"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "otherstuff"
End With



This is an example of what I had done for a macro to create a large amount
of charts. The data charted was determined by another sub which found the
top and bottom cells of of data. I build the string using variables for
column number ,row number and chart name. This script actually modified a
generic chart that had already been created. I found it easier to do it that
way, I could use a previous macro to create 4 identical charts neatly spaced
on a worksheet and then call the subroutine to modify the charts to suit the
data required for that page.

Dim name1

activescreenupdating = False
Dim v11
Dim v12
Dim v31
Dim v32
Dim v33
Dim v21
Dim v22
Dim v23
Dim v41
Dim v42
Dim v43
Dim v44
Dim v45
Dim count
Range("z2").Select
Selection.Formula = "=Combined!D1"
count = Selection.Value
Dim bottom
Dim combined
combined = "=combined!r"
Dim mid
mid = ":r"
Dim cend
cend = "c"
v11 = 11
v12 = 15
v31 = 9
v32 = 10
v21 = 22
v22 = 23
v23 = 24
v41 = 17
v42 = 18
v43 = 19
v44 = 20
v45 = 21
name1 = 3



bottom = 67 + (count - 2) * 46
Top = 101 + (count - 2) * 46


'assemble target cell ranges using variables, reusing variable names to make
programming easier
v11 = combined & bottom & cend & v11 & mid & Top & cend & v11
v12 = combined & bottom & cend & v12 & mid & Top & cend & v12
v31 = combined & bottom & cend & v31 & mid & Top & cend & v31
v32 = combined & bottom & cend & v32 & mid & Top & cend & v32
v21 = combined & bottom & cend & v21 & mid & Top & cend & v21
v22 = combined & bottom & cend & v22 & mid & Top & cend & v22
v23 = combined & bottom & cend & v23 & mid & Top & cend & v23
v41 = combined & bottom & cend & v41 & mid & Top & cend & v41
v42 = combined & bottom & cend & v42 & mid & Top & cend & v42
v43 = combined & bottom & cend & v43 & mid & Top & cend & v43
v44 = combined & bottom & cend & v44 & mid & Top & cend & v44
v45 = combined & bottom & cend & v45 & mid & Top & cend & v45

name1 = combined & bottom & cend & name1 & mid & Top & cend & name1


ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection(1).Values = [v11]
ActiveChart.SeriesCollection(2).Values = [v12]
ActiveChart.SeriesCollection(1).XValues = [name1]
ActiveChart.SeriesCollection(2).XValues = [name1]
ActiveSheet.Select

ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection(1).Values = [v21]
ActiveChart.SeriesCollection(2).Values = [v22]
ActiveChart.SeriesCollection(3).Values = [v23]
ActiveChart.SeriesCollection(1).XValues = [name1]
ActiveChart.SeriesCollection(2).XValues = [name1]
ActiveChart.SeriesCollection(3).XValues = [name1]
ActiveSheet.Select

ActiveSheet.ChartObjects("Chart 3").Activate
ActiveChart.SeriesCollection(1).Values = [v31]
ActiveChart.SeriesCollection(2).Values = [v32]
ActiveChart.SeriesCollection(1).XValues = [name1]
ActiveChart.SeriesCollection(2).XValues = [name1]
ActiveSheet.Select

ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SeriesCollection(1).Values = [v41]
ActiveChart.SeriesCollection(2).Values = [v42]
ActiveChart.SeriesCollection(3).Values = [v43]
ActiveChart.SeriesCollection(4).Values = [v43]
ActiveChart.SeriesCollection(1).XValues = [name1]
ActiveChart.SeriesCollection(2).XValues = [name1]
ActiveChart.SeriesCollection(3).XValues = [name1]
ActiveChart.SeriesCollection(4).XValues = [name1]
ActiveChart.SeriesCollection(5).Values = [v45]
ActiveChart.SeriesCollection(5).XValues = [name1]
ActiveSheet.Select



good luck.


"Fabrizio" wrote:

I am writing a macro that generates several chart from info that is placed in
a worksheet. The code I am writing has to be very dynamci so I cannot record
a macro etc. I want to create several chart types first e.g. one type of
chart that has some settings and borders etc. I then want to make e.g. three
charts (with different input) of one type of chart and four of another type.
Does anyone hve any idea how to make this? I know it is a big question but
please please help me! I am not very good a visual basic so please explain if
necessary...Thank you!

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
making charts kyle Excel Discussion (Misc queries) 6 December 13th 09 07:05 AM
Making charts equivalent jimbo Charts and Charting in Excel 3 March 7th 07 02:48 AM
Making charts Fabrizio Excel Programming 1 June 29th 06 12:23 PM
Making charts stendahl_jones Excel Programming 0 June 20th 06 03:31 PM
making charts with vb 6.3 april27 Excel Programming 1 June 16th 06 02:44 PM


All times are GMT +1. The time now is 12:02 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"