Stránka 1 z 1

Excel - makro na tvorbu grafů

Napsal: 19 čer 2006 14:59
od .Ka.Brnak
Nazdar experti. Zvládám trochu makra, ale lámu hlavu nad problémel s grafy.
V tabulce mám data o 6 sloupcích a v rámci každého řádku potřebuji vytvořit samostatný graf. Jednoduchý čarový graf na konci každého řádku (výška cirka 250 a na něm objekt "graf") se záhlavím prvních dvou sloubců.
Makro, které by generovalo takový graf za všemy řádky tabulky.
Furt mi to hlásí něco ve stylu "Method 'ceslls' of object '_Global' failed" - většinou kdy se snažím vnutit zápis pole, či rozsahu hodnot pro zdrojová data, či nadpis grafu.

ukázka:
Dim r As Long
r = 5
Do While Cells(r, 1) <> ""

Range(Cells(r, 8), Cells(r, 15)).Select
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("CR2000_průměrná těžba").Range(Cells(r, 8), Cells(r, 15))
ActiveChart.PlotBy = xlRows
ActiveChart.SeriesCollection(1).XValues = "='CR2000_průměrná těžba'!R2C8:R2C15"
ActiveChart.SeriesCollection(1).Name = "='CR2000_průměrná těžba'!R4C1:R4C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:= _
"CR2000_průměrná těžba"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "228 Račice - Předonín - Dobřín"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "roky"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "'000 m3"
End With
ActiveSheet.Shapes("graf 34").IncrementLeft 205.5
ActiveSheet.Shapes("graf 34").IncrementTop 83.25
ActiveSheet.Shapes("graf 34").IncrementLeft 0.75
ActiveSheet.Shapes("graf 34").IncrementTop 2.25
ActiveSheet.Shapes("graf 34").IncrementLeft -1.5
ActiveSheet.Shapes("graf 34").IncrementTop -3#
ActiveSheet.Shapes("graf 34").ScaleWidth 0.73, msoFalse, msoScaleFromTopLeft
ActiveSheet.Shapes("graf 34").ScaleHeight 0.69, msoFalse, msoScaleFromTopLeft
ActiveChart.Legend.Select
Selection.Delete
ActiveSheet.Shapes("graf 34").ScaleHeight 0.99, msoFalse, _
msoScaleFromBottomRight
ActiveSheet.Shapes("graf 34").ScaleHeight 0.99, msoFalse, msoScaleFromTopLeft
r = r + 1
Loop

End Sub