[Excel - VB] Source Data grafiek updaten via VB

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

  • Zerveza
  • Registratie: Maart 2001
  • Laatst online: 17-12-2021

Zerveza

DoS porfavor

Topicstarter
Ik heb een aantal grafieken gebasseerd op informatie die ge-importeerd word. Kort door de bocht, per datum een waarde. Als ik mijn data refresh komt er een datum bij..
Nu wil ik een nette grafiek maken van deze data, eenmalig lukt natuurlijk zonder problemen, maar als ik refresh en er komt data bij moet ik alles manueel gaan aanpassen. Nu dacht ik aan een VB achtig iets wat draait om de boel te updaten.
Als ik een Macro opneem kom ik op zoiets:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub Macro3()
'
' Macro3 Macro
' Macro recorded 12-6-2006 by No Name
'

'
    ActiveSheet.ChartObjects("Chart 18").Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SeriesCollection(1).XValues = "=SandBox!R28C1:R43C1"
    ActiveChart.SeriesCollection(1).Values = "=SandBox!R28C6:R43C6"
    ActiveChart.SeriesCollection(2).XValues = "=SandBox!R28C1:R43C1"
    ActiveChart.SeriesCollection(2).Values = "=SandBox!R28C7:R43C7"
    ActiveChart.SeriesCollection(3).XValues = "=SandBox!R28C1:R43C1"
    ActiveChart.SeriesCollection(3).Values = "=SandBox!R28C3:R43C3"
End Sub


nu moet dus die R43 gaan toenemen met het aantal velden wat erbij komt.

die R43 moet vervangen worden met Rx, waarbij x gelijk is aan:
code:
1
=27+COUNTA(A28:A9999)


aangezien ik nabij niets van VB weet, dus ook niet met welke keyword ik moet gaan zoeken/uitpluizen vroeg ik me af of iemand me in de goede richting kan duwen.? Of denk ik veeeeeel te moeilijk en heeft Bill iets anders voor mij voorzien.

"Nice to have" is dan ook nog een trigger (e.g. als ik het tabblad open) waarbij de macro draait.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 28-07 19:23
Ga naar de Visual basic editor (Alt-F11), rechtsklik de sheet waarin de grafiek staat, kies "view code" en plak:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_Activate()
Dim bereik As Range
Dim laatsterij As Integer
Set bereik = Worksheets(SandBox).Range("A28")
laatsterij = bereik.CurrentRegion.SpecialCells(xlCellTypeLastCell).Row
With ActiveSheet.ChartObjects("Chart 18").Chart
.SeriesCollection(1).XValues = "=SandBox!R28C1:R" & laatsterij & "C1"
.SeriesCollection(1).Values = "=SandBox!R28C6:R" & laatsterij & "C6"
.SeriesCollection(2).XValues = "=SandBox!R28C1:R" & laatsterij & "C1"
.SeriesCollection(2).Values = "=SandBox!R28C7:R" & laatsterij & "C7"
.SeriesCollection(3).XValues = "=SandBox!R28C1:R" & laatsterij & "C1"
.SeriesCollection(3).Values = "=SandBox!R28C3:R" & laatsterij & "C3"
End With
End Sub

Specialcells is een manier om uit te zoeken wat de eerste/laatste etc. cel van een groep cellen (in dezes current region) is.
Als je nu de relevante sheet opent zou je grafiek ververst moeten worden.

Verwijderd

zonder mezelf te verdiepen in je specifieke probleem, lijkt het realiseerbaar zonder vba. kijk eens op de pagina dynamische grafieken in excel. heel de site is trouwens een aanrader.

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 28-07 19:23
Verwijderd schreef op maandag 12 juni 2006 @ 15:42:
zonder mezelf te verdiepen in je specifieke probleem, lijkt het realiseerbaar zonder vba. kijk eens op de pagina dynamische grafieken in excel. heel de site is trouwens een aanrader.
Bepaald mooier dan mijn techniek idd.

  • Zerveza
  • Registratie: Maart 2001
  • Laatst online: 17-12-2021

Zerveza

DoS porfavor

Topicstarter
yeppers, het is gelukt met de dynamische grafieken..! zeer chique oplossing met die offset, ben erg blij met de kennis die ik hierdoor verkregen heb!

thnx