Я совершенно новичок в области программирования и начинаю изучать VBA для моделирования финансовых сценариев в Excel. Теперь у меня есть вопрос относительно изменения XV значений диаграммы, чтобы изменить даты, представленные мне для данного набора данных.

Я использую переменные, которые хранят номер первой и последней строки серии, которую я хочу использовать, чтобы дать VBA переменный диапазон для выбора значений XV в зависимости от того, как я определяю переменные. Переменные определены как целые числа.

Мой код:

Sheets("Result").ChartObjects("Chart 2").Activate
ActiveChart.FullSeriesCollection(1).XValues = ActiveWorkbook.Sheets("Data_Portfolio").Range(Cells(RangeStart, 1), Cells(RangeStop, 1))

Было бы очень любезно объяснить мне, что не так со второй строкой и как я могу решить «ошибку, определяемую приложением или объектом».

Заранее благодарю вас всех,

Ник

1
TyRa97 15 Май 2018 в 18:59

1 ответ

Лучший ответ

1) Полностью квалифицировать Cells с именем рабочего листа

 ActiveChart.FullSeriesCollection(1).XValues = ActiveWorkbook.Sheets("Data_Portfolio").Range(ActiveWorkbook.Sheets("Data_Portfolio").Cells(RangeStart, 1), ActiveWorkbook.Sheets("Data_Portfolio").Cells(RangeStop, 1)) 

2) Также следует убедиться, что есть серия (1), которую нужно добавить, и для некоторых версий лучше использовать SeriesCollection, а не FullSeriesCollection.

3) Используйте Long, а не Integer, чтобы избежать переполнения.

Пример ниже:

Option Explicit

Public Sub test()

    Dim RangeStart As Long
    Dim RangeStop As Long

    RangeStart = 1
    RangeStop = 5
    Dim ws As Worksheet
    Set ws = ActiveWorkbook.Worksheets("Data_Portfolio")

    Worksheets("Result").ChartObjects("Chart 2").Activate '<== Is this ActiveWorkbook or ThisWorkbook?
    ActiveChart.SeriesCollection.NewSeries '<=  added for demo only to ensure present
    ActiveChart.SeriesCollection(1).XValues = ws.Range(ws.Cells(RangeStart, 1), ws.Cells(RangeStop, 1)) '< x
    ActiveChart.SeriesCollection(1).Values = ws.Range(ws.Cells(RangeStart, 1), ws.Cells(RangeStop, 1)) ' < y copied for test purposes only
End Sub
1
QHarr 15 Май 2018 в 17:32