Een offspin van \[PoSh/VBA] Macro injecteren in Excel vanuit Powershell overigens.
De volgende code maakt een grafiek op basis van gegevens op een ander tabblad. Via een range-object 'Finder' wordt gezocht naar de cel met de juiste waarde en het rijnummer wordt teruggegeven zodat de grafiek aangemaakt kan worden.
Het probleem draait rond strGraphName. Deze variabele wordt goed ingevuld aangezien ActiveChart.SeriesCollection(1).Name = strGraphName doet wat het moet doen (nl. strGraphName tonen). Desalniettemin krijg ik een Software not found error terug wanneer ik de code uitvoer.
Het meest bizarre:
Stel, in Packages Graph!$B$1 zit bijvoorbeeld "MS Office 2010".
Met strGraphName = "='Packages Graph'" & "!" & "$B$1" krijg ik terug dat strGraphName = "MS Office 2010" zoals verwacht. Maar wanneer ik het in de Finder steek krijg ik die 'not found'.
Hier komt ie: als ik expliciet strGraphName = "MS Office 2010" in de code zou zetten, dan werkt het wel. Daar schiet ik natuurlijk niets mee op, aangezien het dan niet dynamisch meer is, maar het toont dat de Finder wel werkt.
Spelen met quotes, met trimming (wat zinloos is aangezien de waarde uit een dropdown box komt),... het biedt allemaal geen soelaas.
Als iemand weet wat er aan de hand is dan hoor ik het graag.
De volgende code maakt een grafiek op basis van gegevens op een ander tabblad. Via een range-object 'Finder' wordt gezocht naar de cel met de juiste waarde en het rijnummer wordt teruggegeven zodat de grafiek aangemaakt kan worden.
Visual Basic .NET:
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
39
40
41
42
43
44
45
| Sub AddGraph() 'By YellowOnline ' 'Declarations Dim Finder As Range Dim ChartSurface As Range Dim ChartObject As ChartObject Dim strGraphName As String 'Creating the chart strGraphName = "='Packages Graph'" & "!" & "$B$1" arrGraphLabels = "='Packages Data'" & "!" & "$E$1:$P$1" With Sheets("Packages Data").Range("A:A") Set Finder = .Find(What:=strGraphName, After:=.Cells(.Cells.Count), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) If Not Finder Is Nothing Then Application.Goto Finder Else MsgBox "Software not found" End If End With strRow = CStr(ActiveCell.Row) Sheets("Packages Graph").Activate arrGraphValues = "='Packages Data'" & "!" & "$E$" + strRow + ":" + "$P$" + strRow ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLineMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = strGraphName ActiveChart.SeriesCollection(1).Values = arrGraphValues ActiveChart.SeriesCollection(1).XValues = arrGraphLabels 'Deleting the automatic Legend ActiveChart.Legend.Select Selection.Delete 'Setting size Set ChartSurface = ActiveSheet.Range("C4:C30") Set ChartObject = ActiveChart.Parent ChartObject.Height = ChartSurface.Height ChartObject.Width = ChartSurface.Width ChartObject.Top = ChartSurface.Top ChartObject.Left = ChartSurface.Left End Sub |
Het probleem draait rond strGraphName. Deze variabele wordt goed ingevuld aangezien ActiveChart.SeriesCollection(1).Name = strGraphName doet wat het moet doen (nl. strGraphName tonen). Desalniettemin krijg ik een Software not found error terug wanneer ik de code uitvoer.
Het meest bizarre:
Stel, in Packages Graph!$B$1 zit bijvoorbeeld "MS Office 2010".
Met strGraphName = "='Packages Graph'" & "!" & "$B$1" krijg ik terug dat strGraphName = "MS Office 2010" zoals verwacht. Maar wanneer ik het in de Finder steek krijg ik die 'not found'.
Hier komt ie: als ik expliciet strGraphName = "MS Office 2010" in de code zou zetten, dan werkt het wel. Daar schiet ik natuurlijk niets mee op, aangezien het dan niet dynamisch meer is, maar het toont dat de Finder wel werkt.
Spelen met quotes, met trimming (wat zinloos is aangezien de waarde uit een dropdown box komt),... het biedt allemaal geen soelaas.
Als iemand weet wat er aan de hand is dan hoor ik het graag.
