@Verwijderd
wat je kunt doen, is met de macro-recorder de handelingen opnemen die je uitvoert voor het maken van 1 grafiek...
De volgende stap is dan automatiseren dmv een loop met variabelen, waardoor je deze code herhaalt voor elke rij met data.
Kijk eens naar onderstaande code, en of je deze begrijpt.. Van daaruit kun je dan gaan aanpassen/customizen naar jouw eigen wensen/situatie.
Proof-of-concept
levert het volgende op:

Nu is het gebruik van ActiveSheet en ActiveChart niet erg handig (maar wel lekker makkeijk in de opbouw-fase).. Beter is het om rechtstreeks te verwijzen naar het gewenste werkblad/grafiek-object.. houd daar in je uiteindelijke code rekening mee..
Oh ja, vba heeft geen undo-knop.. houd daar ook rekening mee
data kwijt = data kwijt
wat je kunt doen, is met de macro-recorder de handelingen opnemen die je uitvoert voor het maken van 1 grafiek...
De volgende stap is dan automatiseren dmv een loop met variabelen, waardoor je deze code herhaalt voor elke rij met data.
Kijk eens naar onderstaande code, en of je deze begrijpt.. Van daaruit kun je dan gaan aanpassen/customizen naar jouw eigen wensen/situatie.
Proof-of-concept
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| Option Explicit Sub MaakGrafieken() Dim rngX As Range 'range met x-waarden Dim rngY As Range 'range met y-waarden Dim strGrafiek As String 'grafieknaam Dim c As Range 'cel in bereik Dim i As Long 'lusteller 'initialisatie van de lusteller i = 1 With ActiveSheet For Each c In .Range("A2:A3") 'titel / naam van de grafiek strGrafiek = c.Value 'bereik x-as en y-as vaststellen Set rngX = .Range(.Cells(c.Row, 2), .Cells(c.Row, 5)) Set rngY = .Range(.Cells(c.Row, 6), .Cells(c.Row, 9)) 'grafiek aanmaken en meteen selecteren (ik ben lui, ik weet het) ActiveSheet.Shapes.AddChart.Select 'met de huidige grafiek With ActiveChart .ChartType = xlLine 'type grafiek .SetSourceData Source:=rngY, PlotBy:=xlRows 'bereik met y-waarden .SeriesCollection(1).XValues = rngX 'bereik met waarden voor de x-as .Parent.Top = 100 'bovenkant grafiek .Parent.Left = (i - 1) * 100 'linkerkant grafiek .Parent.Width = 100 'breedte grafiek .Parent.Height = 100 'hoogte grafiek .HasTitle = True 'moet ie een titel hebben? .ChartTitle.Text = strGrafiek 'wat is de titel? .HasLegend = False 'legenda? End With i = i + 1 Next c End With End Sub |
levert het volgende op:

Nu is het gebruik van ActiveSheet en ActiveChart niet erg handig (maar wel lekker makkeijk in de opbouw-fase).. Beter is het om rechtstreeks te verwijzen naar het gewenste werkblad/grafiek-object.. houd daar in je uiteindelijke code rekening mee..
Oh ja, vba heeft geen undo-knop.. houd daar ook rekening mee
data kwijt = data kwijt
[ Voor 7% gewijzigd door breew op 07-04-2018 16:18 ]