Обновление готовых графиков в VBA - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть несколько готовых диаграмм на вкладке «Сводка», и я хочу, чтобы они извлекали данные из вкладки «Данные».Предварительно, я просто вставил точечные диаграммы с заголовками и осями, и я просто хочу обновить значения X и Y.На вкладке «данные» есть группа ячеек, связанных с другой книгой.Я также пытался создавать диаграммы с нуля, что я делал раньше, но код из этого файла не работает, когда я передаю его в этот проект.

Индексирование даты начала и окончаниядаты работают нормально, и все работает отлично, пока я не попытаюсь на самом деле обновить значения X и Y.Я получаю сообщение «Ошибка 1004: определено приложение или объектная ошибка»

Вот код, который я использую для обновления готовых графиков:

Option Explicit

Public Sub UpdateCharts()

Dim i As Integer, j As Integer, flag As Integer, k As Integer, n   As        Integer, w As Integer

Dim enddate As Date
Dim startdate As Date

enddate = Worksheets("Summary").range("A2")
startdate = Worksheets("Summary").range("A3")

i = 1
j = 1
k = 1
n = 1

'Index the column that has the enddate

Do
    If Worksheets("Data").Cells(2, j + 2) = enddate Then
        i = j + 2
        flag = 1
    End If
    j = j + 1
Loop While flag = 0

flag = 0

'Index the column that has the startdate
Do
    If Worksheets("Data").Cells(2, n + 2) = startdate Then
        k = n + 2
        flag = 1
    End If
    n = n + 1
Loop While flag = 0

For w = 1 To Worksheets("summary").ChartObjects.Count
    Worksheets("summary").ChartObjects(w).Name = w
Next w

'Error happens here
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k)).Value
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k)).Value

End Sub


`

1 Ответ

0 голосов
/ 28 февраля 2019

Изменение

'Error happens here
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k)).Value
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k)).Value

на

'No more error
Worksheets("summary").ChartObjects(1).SeriesCollection(1).XValues = Worksheets("data").range(Cells(2, i), Cells(2, k))
Worksheets("summary").ChartObjects(1).SeriesCollection(1).Values = Worksheets("data").range(Cells(3, i), Cells(3, k))

.XValues и .Values может принимать диапазон, предоставленный моим измененным кодом, или одномерный массив.Ваш код с .Value предоставляет двумерные массивы, которые душат .XValues и .Values.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...