Ошибка метода chart.setsourcedata

У меня проблема с добавлением диаграммы на свой лист. Проблема связана с методом .SetSourceData, я пробовал различные решения здесь и на других форумах, но ничего не работает. Вы можете мне сказать, что это?

Ошибка: Method'SetSourceData' of object'Chart' failed

Кстати, Range определен правильно, это проверялось строкой myRng.Select

Вот код

'adding the chart
Dim chrt As Chart
Dim myRng As Range
Set chrt = ws.Shapes.AddChart.Chart
Set myRng = Union(ws.Range(Cells(19 + pt.RowRange.Rows.Count, 5), Cells(19 +     
pt.RowRange.Rows.Count, 6)), ws.Range(Cells(20 + pt.RowRange.Rows.Count, 3), 
Cells(18 + 2 * (pt.RowRange.Rows.Count), 6)))
'myRng.Select
'Set chrt = ws.ChartObjects.Add.Chart
'chrt.Activate
    With chrt
    'For j = chrt.SeriesCollection.Count To 1 Step -1
    '    chrt.SeriesCollection(j).Delete
    'Next j
    '.SetSourceData Source:=ws.Range(Cells(19 + pt.RowRange.Rows.Count, 4), Cells(18 + 2 * (pt.RowRange.Rows.Count), 6)), PlotBy:=xlRows
    '.SetSourceData Source:=myRng, PlotBy:=xlRows
    .ChartType = xl3DColumnClustered
    '.SetSourceData Source:=Union(ws.Range(Cells(19 + pt.RowRange.Rows.Count, 5), Cells(19 + pt.RowRange.Rows.Count, 6)), ws.Range(Cells(20 + pt.RowRange.Rows.Count, 3), Cells(18 + 2 * (pt.RowRange.Rows.Count), 6))), PlotBy:=xlRows
    '.SetSourceData Source:=ws.Range(Cells(19 + pt.RowRange.Rows.Count, 4), Cells(18 + 2 * (pt.RowRange.Rows.Count), 6)), PlotBy:=xlRows
    '.SetSourceData Source:=myRng, PlotBy:=xlRows
    .Parent.Name = "Wykres_LDP"
    .ChartArea.Left = ws.Cells(20 + pt.RowRange.Rows.Count, 9).Left
    .ChartArea.Top = ws.Cells(20 + pt.RowRange.Rows.Count, 9).Top
    .ChartArea.Height = ws.Range(Cells(20 + pt.RowRange.Rows.Count, 9), Cells(45 + pt.RowRange.Rows.Count, 9)).Height
    .ChartArea.Width = 800
    .Parent.Placement = xlMove
    '.SetSourceData Source:=Union(ws.Range(Cells(19 + pt.RowRange.Rows.Count, 5), Cells(19 + pt.RowRange.Rows.Count, 6)), ws.Range(Cells(20 + pt.RowRange.Rows.Count, 3), Cells(18 + 2 * (pt.RowRange.Rows.Count), 6))), PlotBy:=xlRows
    .ChartColor = 10
    .ChartGroups(1).GapWidth = 75
    .SetElement (msoElementLegendBottom)
    .Legend.Font.Size = 12
    .Legend.Font.Bold = True
    .SetElement (msoElementChartTitleAboveChart)
    .ChartTitle.Text = "Liczba Dni Promocji - Wykres"
    .ChartTitle.Font.Bold = True
    .ChartTitle.Font.Size = 16
    'With .Axes(xlCategory, xlPrimary)
        ''.CategoryType = xlTimeScale
        '.MinimumScale = DateValue("01.01." & Year1)
        '.MaximumScale = DateValue("01.12." & Year2)
        ''.BaseUnitIsAuto = True
        '.BaseUnit = xlMonths '1
        '.MajorUnit = 1
        '.MajorUnitScale = xlMonths
        '.TickLabels.Orientation = xlUpward
        '.TickLabels.NumberFormat = "mmmm yy"
        '.TickLabels.Font.Bold = True
        '.TickLabels.Font.Size = 11
    'End With
End With

Что в результате Debug.Print myRng.Address?

BigBen 13.09.2018 20:42

Это не проблема myRng, но я понял, в чем проблема, диаграмма была создана как сводная диаграмма с данными из сводной таблицы, которую я использовал ранее в макросе, просто изменив myRng на ws.Range(Cells(19 + pt.RowRange.Rows.Count, 4), Cells(18 + 2 * (pt.RowRange.Rows.Count), 6)) и выбрав диапазон myRng.Select, разрешил проблема. Кстати, похоже, что myRng должен быть определен таким образом, не только для ячеек со значениями, но и как «quandrangle», содержащий все данные. Но спасибо за проверку моего вопроса @BigBen :)

Slynny 14.09.2018 11:40
0
2
152
0

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