Hallo,
Ik heb charts die ik een bepaalde positie en size wil geven op een chartsheet. Ik gebruik daar chartobjects(i).plotarea (top, left, width, height) voor. Helaas als ik deze waarden toe ken dan veranderen ze toch, er wordt gescaled door Excel. Heel veel gezocht op internet en toen kwam ik een stukje code tegen wat 'redelijk' werkt. Alleen het is niet goed genoeg.
Namelijk de legend en charttitle overlappen soms de plotarea.
De gegevens voor het resizen van de chart (ChtNew), de legend en de title haal ik uit een andere chart (ChtOrig). De legendpositie van ChtOrig is niet ingevuld, maar het heeft uiteraard wel een top,left,height en width, welke ik ook gebruik.
kan iemand mij helpen?
Ik weet namelijk ook niet waarom onderstaande in forlusjes moeten.
dit is mijn code:
Ik heb charts die ik een bepaalde positie en size wil geven op een chartsheet. Ik gebruik daar chartobjects(i).plotarea (top, left, width, height) voor. Helaas als ik deze waarden toe ken dan veranderen ze toch, er wordt gescaled door Excel. Heel veel gezocht op internet en toen kwam ik een stukje code tegen wat 'redelijk' werkt. Alleen het is niet goed genoeg.
Namelijk de legend en charttitle overlappen soms de plotarea.
De gegevens voor het resizen van de chart (ChtNew), de legend en de title haal ik uit een andere chart (ChtOrig). De legendpositie van ChtOrig is niet ingevuld, maar het heeft uiteraard wel een top,left,height en width, welke ik ook gebruik.
kan iemand mij helpen?
Ik weet namelijk ook niet waarom onderstaande in forlusjes moeten.
dit is mijn code:
Code:
with ChtNew.legend
.Top = ChtOrig.Legend.Top
.Height = ChtOrig.Legend.Height
.Left = ChtOrig.Legend.Left
.Width = ChtOrig.Legend.Width '* 1.1
.Top = ChtOrig.Legend.Top + ChtOrig.ChartTitle.Top
end with
With ChtNew.Plotarea
.Top = ChtOrig.PlotArea.Top
.Height = ChtOrig.PlotArea.Height
.Width = ChtOrig.PlotArea.Width
.Left = ChtOrig.PlotArea.Left
For i = 1 To ChtOrig.PlotArea.Top
.Top = i
If .Top = ChtOrig.PlotArea.Top Then
Exit For
End If
Next i
For i = 1 To ChtOrig.PlotArea.Height
.Height = i
If .Height = ChtOrig.PlotArea.Height Then
Exit For
End If
Next i
For i = 1 To ChtOrig.PlotArea.Left
.Left = i
If .Left = ChtOrig.PlotArea.Left Then
Exit For
End If
Next i
For i = 1 To ChtOrig.PlotArea.Width
.Width = i
If .Width = ChtOrig.PlotArea.Width Then
Exit For
End If
Next i
end with