@Ndam90,
M.b.t. tot vraag 1.
Met het aantal gelijke punten voor hoogte en breedte lijkt de grafiek precies vierkant te zijn.
Op het oog lijkt het inderdaad een vierkant, maar als ik het nameet met een liniaal dan zit er toch een halve centimeter verschil tussen.
Dus niet exact een vierkant.
Is dit een bug (een gemis) in Excel of moet toch naar een andere oplossing gezocht worden?
Of ga ik verkeerd met hoogte en breedte om?
M.b.t. tot vraag 2.
Op jouw omschrijving "dynamische grafiek" heb ik verder gezocht. Een klein beetje omdenken is hier van toepassing.
Spreidinggrafiek baseren op tabel (cellen U7 t/m W23). Reeks in grafiek niet laten tonen.
Grafiek is nu opgebouwd op basis van de eenheden 0 t/m 1.5, zowel x-as als y-as.
Voor automatisch aanpassen van y-as en x-as met behoud van strakke indeling 0 t/m 1,5 is en hulpmiddel nodig.
Anders verspringen de verhoudingen van de assen.
Zie namen "MijnGrenzen", "PrimaireEenheidX" en "PrimaireEenheidY" en bijbehorende VBA.
In tabblad "Blad 1"
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("V4"), Target) Is Nothing Then
Call Grafiek
Range("V4").Select
End If
If Not Intersect(Range("W4"), Target) Is Nothing Then
Call Grafiek
Range("W4").Select
End If
End Sub
MACRO GRAFIEK
Sub Grafiek()
Dim sn, pey, pex
sn = Range("mijnGrenzen")
pey = Range("PrimairEenheidY")
pex = Range("PrimairEenheidX")
With ActiveSheet.ChartObjects("Grafiek 1") 'Verander de naam van de grafiek naar de gegeven naam
.Height = 550 ' hoogte v.d. grafiek
.Width = 550 ' breedte v.d. grafiek
'.Top = 100 ' positioneren vanaf top
'.Left = 100 ' positioneren vanaf links
End With
ActiveSheet.ChartObjects("Grafiek 1").Activate 'Verander de naam van de grafiek naar de gegeven naam
ActiveChart.PlotArea.Select
With Selection
.Height = 500 ' hoogte v.h. tekengebied in de grafiek
.Width = 500 ' breedte v.h. tekengebied in de grafiek
.Top = 10 ' positioneren vanaf top in de grafiek
.Left = 10 ' positioneren vanaf links in de grafiek
End With
With Sheets("Blad1").ChartObjects("Grafiek 1").Chart
.Axes(xlCategory).MinimumScale = IIf(IsEmpty(sn(1, 1)), 0, sn(1, 1))
.Axes(xlCategory).MaximumScale = IIf(IsEmpty(sn(2, 1)), 100, sn(2, 1))
.Axes(xlValue).MinimumScale = IIf(IsEmpty(sn(1, 2)), -50, sn(1, 2))
.Axes(xlValue).MaximumScale = IIf(IsEmpty(sn(2, 2)), 500, sn(2, 2))
End With
ActiveSheet.ChartObjects("Grafiek 1").Activate
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MajorUnit = pey
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).MajorUnit = pex
End Sub
Zie ook bijgevoegd bestand:
Bekijk bijlage Voorbeeld grafiek 2.xlsm
Bij wijziging van de velden V4 en W4 wordt de grafiek automatisch aangepast.
Nu nog zorgen dat het precies een vierkant wordt!