Возникли проблемы при обновлении серии графиков с использованием VBA

В значительной степени я написал функцию, которая при запуске отправляет и выбирает самые последние данные с другого листа, а затем выполняет настройку ряда диаграммы так, чтобы она отображала данные за последние 6 месяцев. Все работает, пока не дойдет до обновления диаграммы. я получил

Ошибка времени выполнения '438' Объект не поддерживает это свойство или метод

Вот мой код

Sub Update(startCell, data, sheet, charts, series)
    ActiveWorkbook.Sheets(sheet).Activate
    Range(startCell).Select
    Do While (Not IsEmpty(ActiveCell))
        ActiveCell.Offset(0, 1).Select
    Loop
    Dim x As Range
    Dim y As Range
    Dim NewRng As Range

    Set x = ActiveCell
    Set y = ActiveCell.Offset(0, -5)
    Set NewRng = Range(x.Address & ":" & y.Address)

    ActiveCell.Value() = data
    Worksheets(sheet).ChartObjects(charts).SeriesCollection(series).SetSourceData     Source:=NewRng.Address()


End Sub

1 ответ

Новый ответ

Измените имена переменных для листа на sht, диаграммы для cht и серии для sers Лист, диаграммы и серии - все зарезервированные слова для VBA/Excel.

Сделайте NewRng текстовой переменной, которая содержит имя листа и диапазон

NewRng = "=" & sht & "!" & x.Address & ":" & y.Address

Worksheets(sht).ChartObjects(cht).Activate
ActiveChart.FullSeriesCollection(sers).Values = NewRng

Я уменьшил это до:

Sheets(sht).ChartObjects(cht).Activate
ActiveChart.SeriesCollection(sers).Values = "='" & sht & "'!" & ActiveCell.Address & ":" & ActiveCell.Offset(0, -5).Address

Пока sht получает значение типа "Stewardship-Online", диаграмма получает текстовое значение Graphique 3, а sers представляет собой целое число от 1 до 6 (у вас есть 6 строк на графике.

Другие вопросы по тегам