Moin,
ich behaupte mal die Value.Property eines Series-Object kannste NUR als RANGE (Zellbezug) oder Datenfeld(array) rüberbringen.
Für einen Zellbezug muss das Workbook jedoch aktiv sein, oder du besorgst dein Datenfeld in anderer Weise aus einer geschlossenen Datei.
Keine Lust deine wohernehmichdieDatenMethode nachzubauen, daher ein einfaches Beispiel zumZum:
Option Explicit
Sub TestDiaErstellen()
'Vorgaben
Const startm As Long = 2 'Tabellenzeilen sind Typ LONG !!!
Const endm As Long = 10
Const startf As Long = 2
Const endf As Long = 10
Const fPath As String = "C:\VBA\FrauDiagramm.xlsx" 'Testpfad
'sonst Deklaration
Dim chDiagramm As ChartObject
Dim mPath As String 'ich mag keine Variablen die auch BefehlsSyntax!
'zum Test vorher löschen
For Each chDiagramm In ActiveSheet.ChartObjects
chDiagramm.Delete
Next chDiagramm
'von mir aus
Set chDiagramm = ActiveSheet.ChartObjects.Add(50, 100, 500, 350)
chDiagramm.Chart.ChartType = xlXYScatterLines
chDiagramm.Name = "Einwohner"
With chDiagramm.Chart.SeriesCollection.NewSeries
.XValues = "=Tabelle1!A" + CStr(startm) + ":A" + CStr(endm)
.Values = "=Tabelle1!B" + CStr(startm) + ":B" + CStr(endm)
.Name = "Männer"
End With
'ging einfacher da [ unnötig
mPath = Mid(fPath, 1, InStrRev(fPath, "\")) & "[" & Mid(fPath, _
InStrRev(fPath, "\") + 1, Len(fPath) - InStrRev(fPath, "\"))
'aber
Debug.Print mPath ' da steckt ein [ drin, des mog a net!
'dann eben wieder weg
Workbooks.Open Replace(mPath, "[", "")
'
Workbooks(1).Activate
'jetzt kann auf einen Bereich zugegriffen werden
With chDiagramm.Chart.SeriesCollection.NewSeries
'.XValues = "=[FrauDiagramm.xlsm]Tabelle1!$A$2:$A$10"
'.Values = "=[FrauDiagramm.xlsm]Tabelle1!$B$2:$B$10"
.XValues = "='[" + Workbooks(2).Name + "]Tabelle1'!A" + CStr(startf) + ":A" + CStr(endf)
.Values = "='[" + Workbooks(2).Name + "]Tabelle1'!B" + CStr(startf) + ":B" + CStr(endf)
.Name = "Frauen"
End With
Workbooks(2).Close False
End Sub
|