2017-07-12 2 views
2

In den Blättern ("Kosten") gibt es einen Fehler, der im folgenden Code kommentiert wird. Sobald der Fehler behoben ist, plane ich ein ‚c (x)‘ setzen entgegen Schleife durch jedes DiagrammVBA-Schleife, die Reihe in Diagramm aktualisiert, die Daten von einem anderen Blatt verwendet

Laufzeitfehler ‚1004‘: Method ‚Range‘ des Objekts ‚_Worksheet‘ failed

ich denke, der Fehler etwas mit, wie zu tun hat, ich bin Referenzierung der anderen Blatt

Dim p As Worksheet, cost As Worksheet 
Set cost = Workbooks("dashboard.xlsm").Worksheets("Cost") 
Set p = Workbooks("dashboard.xlsm").Worksheets("p") 

Dim c(1 To 3) As Variant 

p.Activate 
'[c(x)] denotes ranges for each chart object 
'modified by counter [i], denoting ranges for each series 
Set c(1) = p.Range(Cells(3, 1 + i), Cells(3, 1 + i).End(xlDown)) 
Set c(2) = p.Range(Cells(3, 4 + i), Cells(3, 4 + i).End(xlDown)) 
Set c(3) = p.Range(Cells(3, 8 + i), Cells(3, 8 + i).End(xlDown)) 

cost.Activate 
For i = 1 To 2 
    With ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection(i) 
    'all charts follow same time series 
    .XValues = p.Range(Range("a3"), Range("a3").End(xlDown)) '**error here** 
    .Values = c(1) 
    End With 
Next i 
+1

Probieren Sie '.XValues ​​= p.Range (p.Range (" a3 "), p.Range (" a3 "). End (xlDown))' so dass alle Bereiche mit einem Blatt qualifiziert sind. – SJR

+0

Das ist perfekt; es funktionierte. Jetzt habe ich jedoch das Problem, dass c (1) on Schleife für die Reihe i = 1 gelöscht und überschrieben wird durch c (1) on Schleife für die Serie i = 2. Irgendwelche Vorschläge? – mrod

+0

Weder ändern sich Ihre XValues ​​oder Werte in jeder Iteration der Schleife - ist das richtig? – SJR

Antwort

0

Versuchen Sie, Ihre Linie zu ersetzen:

.XValues = p.Range(Range("a3"), Range("a3").End(xlDown)) 

mit:

.XValues = "=" & p.Range(p.Range("a3"), p.Range("a3").End(xlDown)).Address(False, False, xlA1, xlExternal) 
+0

@mrod hast du meine antwort und code gelesen? –

Verwandte Themen