Ga naar inhoud

Excel macro error vba


fistaprino

Aanbevolen berichten

Hallo

 

Als ik een macro maak waarbij opneem dat ik een grafiek invoeg, krijg ik achteraf bij het uitvoeren van die macro de foutcode bij VBA "Objectvariabele of blokvariabele With is niet ingesteld".

Als ik dan de foutopsporing doe, staat "ActiveChart.ClearToMatchStyle" gemarkeerd.

(zie foto bijlage)

 

Wat zou er misgaan?

 

(Ik ben net begonnen met macro's te leren maken en ken nog niks van VBA, dus ik weet niet wat al die tekst in VBA wil zeggen.)

 

Mvg
 

foutcode grafiek vba.JPG

grafiek foutcode.JPG

Link naar reactie
Delen op andere sites

Ok

 

Het zit zo, ik heb twee bestanden: taak4_macros_oplossing.xlsm en omzetcijfers_grafiek.xlsx. (zie bijlages)

Het is de bedoeling dat ik een macro opneem met volgende stappen:

1. Vanuit taak4_macros_oplssing.xlsm, het bestand omzetcijfers_grafiek.xlsx openen.

2. Daar de tabel kopiëren en plakken over de tabel in taak4_macros_oplossing.xlsm.

3. De gegevens selecteren in de tabel van taak4_macros_oplossing.xlsm om een grafiek te maken (=provincienamen + gegevens K_1 + gegevens Totaal).

4. Grafiek maken.

 

Vervolgens is het de bedoeling taak4_macros_oplossing.xlsm op te slaan met tabel, zónder grafiek. Zodat wanneer je taak4_macros_oplossing.xlsm de
volgende keer opent, je de grafiek tevoorschijn kan laten komen door enkel de macro uit te voeren.

 

Bij taak4_macros_oplossing.xlsm staat de grafiek reeds in om je een voorbeeld te geven hoe het eruit zou moeten zien. (+ in de bijlage zit de opdracht)
Je kan deze grafiek eens verwijderen en de macro "grafiek" uitvoeren.
Maar bij het aanmaken van de grafiek stopt hij dus met de foutcode.

omzetcijfers_grafiek.xlsx

opdracht.JPG

taak4_macros_oplossing.xlsm

Link naar reactie
Delen op andere sites

In de door jou aangegeven regel komt er bij mij geen foutmelding, wel bij een aantal andere regels. Dit kan met de gebruikte versie van Excel te maken hebben, zeker omdat het om code gaat die met de recorder is opgenomen. Op de computer waarop ik het bestand opende , was dat Excel 2010. 

Ik sta er overigens wel van te kijken dat men in een vba-programmeercursus zulk soort (met de recorder opgenomen)  opdrachten geeft, maar dat terzijde. Ik kan je niet echt helpen, maar je zou onderstaande eens kunnen proberen; ik vrees echter dat er dan weer (andere) problemen opduiken.

Dim mychart As Chart
Set mychart = ActiveSheet.ChartObjects("Grafiek 1").Chart
With mychart
......
......
End With

 

aangepast door alpha
Link naar reactie
Delen op andere sites

Ik krijg het niet in orde, maar ik zal het er bij laten want binnenkort krijgen wij de oplossingen van onze taken.
Zoals ik al zei, ken ik niks van vba, en daarom denk ik dat dit verder een te lange lijdensweg voor u zou worden om mij hierbij verder te moeten helpen :).
Deze staan trouwens ook niet op punten, maar ik wou het gewoon eens proberen.

 

Het is voor deze cursus eigenlijk niet de bedoeling dat we vba leren. Enkel Officepakketten waarbij dus het gedeelte macro's maken zit.
En ja, als zo'n macro dan fout loopt, word je verwezen naar vba, waarvan we niet verwacht worden dat te kennen.
Het zo'n beetje een zoek-het-maar-uit-cursus, wat dan wel lastig is om iets bij te leren.

 

Bij deze mag het topic afgesloten worden.

In ieder geval toch bedankt voor de hulp.

 

Mvg

 

 

Link naar reactie
Delen op andere sites

Onderstaande macro zou moeten doen wat je wenst als je die in een willekeurig Excelbestand uitvoert (maar uiteraard niet in het bestand "omzetcijfers_grafiek.xlsx" van waaruit je een tabel kopieert). Verondersteld is dat het bestand omzetcijfers_grafiek.xlsx nog dezelfde naam heeft als in je eerste bericht hierboven en dat het op je computer ook nog op dezelfde plaats staat. De macro begint met het pad daar naar toe en dat moet uiteraard precies juist zijn. In de code komen 2 regels voor die beginnen met .FullSeriesCollection . Dat begrip geldt voor Excel 2013 en later. Werk je met Excel 2010, dan moet je in plaats van .FullSeriesCollection gebruiken: .SeriesCollection . Krijg je nog een foutmelding, laat dan even weten welke.

Sub macro1()
Workbooks.Open Filename:= _
"C:\Users\Ben\Desktop\Cvo Programmeren - Ben\Softwarepakketten\Les 4 - Opdrachten - Macros\oefenen dus niks serieus\Opdrachten Macros\omzetcijfers_grafiek.xlsx"
Range("A1:F7").Copy
Windows("taak4_macros_oplossing.xlsm").Activate
Range("A1:F7").Select
ActiveSheet.Paste
Workbooks("omzetcijfers_grafiek.xlsx").Close
Sheets(1).Shapes.AddChart.Select
With ActiveChart
.SetSourceData Source:=Range("Blad1!$A$2:$B$7,Blad1!$F$2:$F$7")
.HasTitle = True
.ChartTitle.Text = "Omzetcijfers"
.ChartType = xlBarClustered
.Axes(xlCategory).ReversePlotOrder = True
.Axes(xlValue).DisplayUnit = xlThousands
.Axes(xlValue).DisplayUnitLabel.Delete
.FullSeriesCollection(1).ApplyDataLabels
.FullSeriesCollection(2).ApplyDataLabels
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Text = "Omzetcijfers in euro's (x 1000)"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Provincies"
.Axes(xlCategory).MajorTickMark = xlNone
.Axes(xlValue).Format.Line.Visible = msoFalse
End With
End Sub

 

aangepast door alpha
Link naar reactie
Delen op andere sites

Gast
Dit topic is nu gesloten voor nieuwe reacties.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.