Hello!
Dit is iets voor VBA-cracks!
Enkele dagen geleden schreef ik een macro naar aanleiding van de post van "excelkees" van 19/12/2010. Die macro hangt als bijlage bij m'n post van 26/12/2010. Ik ben daarbij op een probleem gelopen dat ik niet kan verklaren.
Hierna de code die ik sterk vereenvoudigd heb. Ik heb alle code die het probleem niet beïnvloedt er uit gelaten en het volgende blijft over:
Het probleem zit hem in het statement ThisWorkbook.Sheets("Gegevens").Columns("E:G").ClearContents
Als ik dat plaats voor het aanroepen van de functie AddChartsToResults dan werkt alles naar behoren. Als ik dat echter plaats na het aanroepen van de functie AddChartsToResults, dan levert dat een runtime error 13 (Type Mismatch) op!
Kan iemand daarvoor een verklaring geven?
Opmerking: De workaround die ik daarvoor heb toegepast werkt zonder problemen:
Grtz,
MDN111
Dit is iets voor VBA-cracks!
Enkele dagen geleden schreef ik een macro naar aanleiding van de post van "excelkees" van 19/12/2010. Die macro hangt als bijlage bij m'n post van 26/12/2010. Ik ben daarbij op een probleem gelopen dat ik niet kan verklaren.
Hierna de code die ik sterk vereenvoudigd heb. Ik heb alle code die het probleem niet beïnvloedt er uit gelaten en het volgende blijft over:
Code:
Option Explicit
Private Const Pitch = 8
Sub TransferDataToResults()
Dim i As Integer
'Hier wordt een deel code uitgevoerd die gegevens wisselt tussen de
'sheets "Gegevens" en de sheet "Resultaat". Deze code is weggelaten
'omdat ze geen invloed heeft op het probleem.
'Nadat heel die gegevensuitwisselingen tussen die sheets beëindigd is, roepen we nog een Sub aan om
'in de sheet "Resultaat" een deel charts toe te voegen.
AddChartsToResults
ThisWorkbook.Sheets("Gegevens").Columns("E:G").ClearContents
End Sub
Sub AddChartsToResults()
Dim myChartObject As ChartObject
Dim oC As Range, oCategories As Range, oValues As Range
Dim r As Long
Set oC = ThisWorkbook.Sheets("Resultaat").Cells
For Each myChartObject In ThisWorkbook.Sheets("Resultaat").ChartObjects
myChartObject.Delete
Next
r = 1
Do While oC(r, 1).Value <> ""
With ThisWorkbook.Sheets("Resultaat")
ThisWorkbook.Sheets("Model Chart").ChartObjects(1).Copy
.Paste
Set myChartObject = .ChartObjects(.ChartObjects.Count)
myChartObject.Chart.ChartTitle.Text = oC(r, 1).Offset(1, 1)
myChartObject.Top = oC(r, 1).Top
myChartObject.Left = oC(r, 1).Offset(1, 4).Left
Set oCategories = .Range(oC(r + 1, 1), oC(r + 5, 1))
Set oValues = .Range(oC(r + 1, 3), oC(r + 5, 3))
myChartObject.Chart.SeriesCollection(1).XValues = oCategories
myChartObject.Chart.SeriesCollection(1).Values = oValues
End With
r = r + Pitch
Loop
End Sub
Het probleem zit hem in het statement ThisWorkbook.Sheets("Gegevens").Columns("E:G").ClearContents
Als ik dat plaats voor het aanroepen van de functie AddChartsToResults dan werkt alles naar behoren. Als ik dat echter plaats na het aanroepen van de functie AddChartsToResults, dan levert dat een runtime error 13 (Type Mismatch) op!
Kan iemand daarvoor een verklaring geven?
Opmerking: De workaround die ik daarvoor heb toegepast werkt zonder problemen:
Code:
For i = 5 to 7
ThisWorkbook.Sheets("Gegevens").Columns(i).ClearContents
next
Grtz,
MDN111
Laatst bewerkt: