Beste Excel vrienden,
Vraag:
Hoe kan ik het grafiekgebied van een Execl-grafiek fixeren zodat het grafiekgebied (zonder as-labels) altijd op dezelfde plaats blijft staan?
Toelichting
Als bijlage heb ik een vereenvoudigd model toegevoegd dat duidelijk mijn probleem laat zien.
Ik heb een grafiek gemaakt o.b.v. een vierkant: x-as van 0 t/m 2 met stappen van 0,1 en y-as van 0 t/m 2 met stappen van 0,1)
Daarnaast zijn er invoervelden die van invloed zijn op de grafiek wanneer de invoer parameters wijzigen.
Deze invoerparameters staan boven de grafiek.
Met een macro pas ik de labels aan, zodat aan de x-as en de y-as van de grafiek de juiste gegevens worden toegevoegd.
Deze macro start wanneer cel D2 gewijzigd wordt. Ook een button toegevoegd waarmee de macro gestart kan worden.
Het gaat om de volgende VBA-code:
Probleem:
In Cel D2 staat nu een waarde van €100.000.000,-. Als ik deze met tussenstappen verlaag naar bijvoorbeeld € 1.000,- wordt de opzet van de grafiek anders. In tabblad "Afwijkingen" heb ik aangeven (rode cirkels) wat er wijzigt. De pijlen geven aan waarop het grafiek gebied gefixeerd (het raster) moet blijven. Ik vermoed dat het grafiekgebied (het binnengebied) in Excel, inclusief de as-labels is.
Heeft iemand een oplossing voor dit probleem?
Voorbeeld bestand:
Bekijk bijlage Voorbeeld grafiekgebied fixeren mbv VBA.xlsm
Vraag:
Hoe kan ik het grafiekgebied van een Execl-grafiek fixeren zodat het grafiekgebied (zonder as-labels) altijd op dezelfde plaats blijft staan?
Toelichting
Als bijlage heb ik een vereenvoudigd model toegevoegd dat duidelijk mijn probleem laat zien.
Ik heb een grafiek gemaakt o.b.v. een vierkant: x-as van 0 t/m 2 met stappen van 0,1 en y-as van 0 t/m 2 met stappen van 0,1)
Daarnaast zijn er invoervelden die van invloed zijn op de grafiek wanneer de invoer parameters wijzigen.
Deze invoerparameters staan boven de grafiek.
Met een macro pas ik de labels aan, zodat aan de x-as en de y-as van de grafiek de juiste gegevens worden toegevoegd.
Deze macro start wanneer cel D2 gewijzigd wordt. Ook een button toegevoegd waarmee de macro gestart kan worden.
Het gaat om de volgende VBA-code:
Code:
Sub Update_Grafiek()
Application.ScreenUpdating = False
Dim sn, pey, pex
Dim beneden As Double
Dim links As Double
sn = Range("mijnGrenzen")
pey = Range("PrimairEenheidY")
pex = Range("PrimairEenheidX")
'bepalden hoogte as-waarden
Worksheets("Voorbeeld").Select
ActiveSheet.ChartObjects("Grafiek 1").Activate
ActiveChart.Axes(xlCategory).Select
beneden = ActiveChart.Axes(xlCategory).Height
ActiveSheet.ChartObjects("Grafiek 1").Activate
ActiveChart.Axes(xlValue).Select
links = ActiveChart.Axes(xlValue).Width
' aanpassen gebied Grafiek1 (tabblad "Map1")
With ActiveSheet.ChartObjects("Grafiek 1") 'Verander de naam van de grafiek naar de gegeven naam
.Height = 500 ' hoogte v.d. grafiek
.Width = 500 ' breedte v.d. grafiek
.Top = 120 ' positioneren vanaf top
.Left = 90 ' 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 = 425 + beneden ' hoogte v.h. tekengebied in de grafiek
.Width = 425 + links ' 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("Voorbeeld").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
Range("D2").Select
End Sub
Probleem:
In Cel D2 staat nu een waarde van €100.000.000,-. Als ik deze met tussenstappen verlaag naar bijvoorbeeld € 1.000,- wordt de opzet van de grafiek anders. In tabblad "Afwijkingen" heb ik aangeven (rode cirkels) wat er wijzigt. De pijlen geven aan waarop het grafiek gebied gefixeerd (het raster) moet blijven. Ik vermoed dat het grafiekgebied (het binnengebied) in Excel, inclusief de as-labels is.
Heeft iemand een oplossing voor dit probleem?
Voorbeeld bestand:
Bekijk bijlage Voorbeeld grafiekgebied fixeren mbv VBA.xlsm