[Excel] Bereik van grafiek dynamisch maken

Pagina: 1
Acties:
  • 547 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 27928

Topicstarter
<edit>Hieronder staat nog een vraag van mij. Het onderstaande probleem heb ik al opgelost met een macro (zie mijn laatste post) , ik wil nu graag deze macro anders activeren..... </edit>

hallo,

Ik heb set data voor 52 weken in het jaar. Voor de eerste 15 weken van dit jaar wil ik graag een grafiek maken, maar wanneer ik week 16 heb ingevuld moettie automatisch deze week ook meenemen. Dit dus om te voorkomen dat ik (na week 15) 37 lege reeksgegevens in de grafiek krijg. Ik heb nu het volgende ingesteld: ik vul in welk weeknummer als laatste meegenomen moet worden. Dit cijfer staat in C2. De reeks heb ik nu als volgt bepaald: =(G5:(INDIRECT("G"&($C$2+4)))); de data voor de eerste week staat dus in G5, de reeks loopt nu tot G19; dit klopt.....
Alleen: als ik dit in excell in geef als doelbereik van de grafiek of als reeks zet Excel 'm zelf om in G19, en is alle dynamiek verdwenen. Ik ben nu dus op zoek naar een manier om de grafiek zichzelf te laten updaten na het wijzigen van 15 in 16... Iemand een idee?? Ik gebruik overigens excel 97....
Alvast bedankt!!!

[ Voor 11% gewijzigd door Anoniem: 27928 op 24-04-2003 11:45 ]


Acties:
  • 0 Henk 'm!

  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 24-03 10:51

CoRrRan

Don't Panic!!!

Wat je zou kunnen doen is een macro schrijven op event-niveau, die controleert of een bepaalde waarde in een cell verandert is als de worksheet verandert, waarna deze de source-data van de grafiek aanpast.

De andere optie die ik kan bedenken is het gebruik van
code:
1
=INDIRECT(ADDRESS(...))
Maar volgens mij levert dat hetzelfde resultaat als je eerste poging...

[ Voor 4% gewijzigd door CoRrRan op 18-04-2003 13:17 . Reden: Text toegevoegd ]

-- == Alta Alatis Patent == --


Acties:
  • 0 Henk 'm!

Anoniem: 27928

Topicstarter
Mmmmm, dat address krijg ik niet aan de praat.... En een macro koning ben ik helaas ook al niet...... Dit moet toch wel simpeler kunnen, zou ik zeggen........ :(

Acties:
  • 0 Henk 'm!

Anoniem: 27928

Topicstarter
Het is me, op een redelijk omslachtige wijze, uiteindelijk toch gelukt. Ik heb een bereik bepaald (met de naam test) dat er alsvolgt uitziet: =(Blad1!$D$4:(INDIRECT("D"&(Blad1!$C$2+4))));(Blad1!$G$4:(INDIRECT("H"&(Blad1!$C$2+4)))). Dit bereik wordt door de volgende macro toegepast op de grafiek:
ActiveSheet.ChartObjects("Grafiek 1").Activate
ActiveChart.SetSourceData Source:=Sheets("Blad1").Range("test"), _
PlotBy:=xlColumns

Deze macro wordt nu nog geactiveerd door het drukken op een knop. Mijn vraag is of ik dit ook automatisch kan laten gebeuren na het wijzigen van de cel C2. Oftwel, ik typ hier een nieuwe waarde in, geef enter, en de macro begint te lopen..... Ik ben hard op zoek geweest, maar kan nergens iets vinden. Iemand een ideetje?

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Anoniem: 27928 schreef op 24 April 2003 @ 11:12:
Deze macro wordt nu nog geactiveerd door het drukken op een knop. Mijn vraag is of ik dit ook automatisch kan laten gebeuren na het wijzigen van de cel C2. Oftwel, ik typ hier een nieuwe waarde in, geef enter, en de macro begint te lopen..... Ik ben hard op zoek geweest, maar kan nergens iets vinden. Iemand een ideetje?
Yup:
code:
1
2
3
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address(RowAbsolute, ColumnAbsolute, xlA1) = "C2" Then MsgBox "woei"
End Sub

En in plaats van Msgbox "woei" kan je natuurlijk jouw functie aanroepen.

Gebruik If Left(Target.Address(RowAbsolute, ColumnAbsolute, xlA1), 1) = "C" then etc als je wilt dat het altijd wordt aangeroepen als er iets is gebeurd in kolom C.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

Anoniem: 27928

Topicstarter
Thanks!!!! Dit is echt geweldig!!!!! _/-\o_
Pagina: 1