Kolomreferenties met "letters" werkt soms niet.

Status
Niet open voor verdere reacties.

MDN111

Gebruiker
Lid geworden
13 aug 2007
Berichten
503
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:

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:
Ik geloof dat je de quote weg moet halen, dus E:G ipv "E:G"

HTH:D
 
Dag Guus2005 !

Bedankt voor je reactie, maar dat is het niet.

Als ik de quotes weg haal dan komt de regel in 't rood in de VBA-editor.

Grtz,
MDN111.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan