Ошибка при создании многосерийного графика в Excel с использованием VBA - PullRequest
0 голосов
/ 20 июня 2019

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

Я хочу добавить эти данные в серию буксировок. Series1-> A1: B2 и Series2-> A3: B4 (A на оси X, B на оси Y) A B
1 тест1 10 2 Test2 20 3 Test11 30 4 Test22 40

Я добавил код ниже, но столкнулся с ошибкой «Неверные параметры»

Dim ochart As Object, ochartObj As Object
Set ochartObj = ActiveSheet.ChartObjects.Add(Top:=10, left:=325, Width:=600, Height:=300)
Set ochart = ochartObj.Chart
ochart.ChartType = xlXYScatter
ochart.SeriesCollection(1).XValues = Range("B1:B2")
ochart.SeriesCollection(1).Values = Range("A1:A2")
ochart.SeriesCollection(2).XValues = Range("B3:B4")
ochart.SeriesCollection(2).Values = Range("A3:A4")  

Пожалуйста, помогите :) Спасибо!

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

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

Dim ochart As Object, ochartObj As Object

Set ochartObj = ActiveSheet.ChartObjects.Add(Top:=10, Left:=325, Width:=600, Height:=300)
Set ochart = ochartObj.Chart

ochart.ChartType = xlXYScatter

ochart.SeriesCollection.NewSeries
ochart.SeriesCollection(1).XValues = Range("B1:B2")
ochart.SeriesCollection(1).Values = Range("A1:A2")

ochart.SeriesCollection.NewSeries
ochart.SeriesCollection(2).XValues = Range("B3:B4")
ochart.SeriesCollection(2).Values = Range("A3:A4")

Кроме того, я бы посоветовал вам объявить ваши объекты как их конкретные типы.Это делает код немного более эффективным, и вы получите преимущество от IntelliSense.Соответственно, ваш код может быть переписан следующим образом ...

Dim ochart As Chart, ochartObj As ChartObject, oSeries As Series

Set ochartObj = ActiveSheet.ChartObjects.Add(Top:=10, Left:=325, Width:=600, Height:=300)
Set ochart = ochartObj.Chart

With ochart
    .ChartType = xlXYScatter
    Set oSeries = .SeriesCollection.NewSeries
    With oSeries
        .XValues = Range("B1:B2")
        .Values = Range("A1:A2")
    End With
    Set oSeries = .SeriesCollection.NewSeries
    With oSeries
        .XValues = Range("B3:B4")
        .Values = Range("A3:A4")
    End With
End With

Надеюсь, это поможет!

0 голосов
/ 20 июня 2019
Dim ochart As Object, ochartObj As Object
Set ochartObj = ActiveSheet.ChartObjects.Add(Top:=10, left:=325, Width:=600, Height:=300)
Set ochart = ochartObj.Chart
ochart.ChartType = xlXYScatter

ochart.SeriesCollection.NewSeries
ochart.SeriesCollection.NewSeries

ochart.SeriesCollection(1).XValues = Range("B1:B2")
ochart.SeriesCollection(1).Values = Range("A1:A2")
ochart.SeriesCollection(2).XValues = Range("B3:B4")
ochart.SeriesCollection(2).Values = Range("A3:A4")  

Но вы действительно должны:

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