Это должно быть очень просто, но я не могу понять синтаксис. Я хочу изменить значения X PieChart равными тому, что находится в диапазоне B8: B12. Это мой код для настройки PieChart.VBA- Изменить значения X круговой диаграммы на диапазон в неактивном рабочем листе
Set pie_chart = Charts.Add()
With pie_chart
.ChartType = xlPie
.SetSourceData Source:=new_sheet.Range("C2:C" & _
num_bins + 1), _
PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, _
Name:=new_sheet.Name
End With
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = title
.ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey _
:=False, HasLeaderLines:=True
.SeriesCollection(1).DataLabels.NumberFormat = "0.0%"
.FullSeriesCollection(1).XValues = "=Content!$B$8:$B$12"
End With
линия в вопросе, что должно быть изменено в .FullSeriesCollection(1).XValues = "Content!$B$8:$B$12"
, потому что код генерирует большие Таблицы, не все из которых под названием Content. Вместо этого мне нужно, чтобы захватить значения X из B8-B12, независимо от того, какое имя листа указано, на котором находится диаграмма.
Если это помогает, имя Материнской листа из диаграммы сохраняется в переменной new_sheet
Я попытался вещи, как .FullSeriesCollection(1).XValues="new_sheet.Name!$B$8:$B$12"
и .FullSeriesCollection(1).XValues=new_sheet.Name&"!$B$8:$B$12"
Я не знаю, почему это не будет работать: .FullSeriesCollection(1).XValues = "=" & new_sheet.Name & "!$B$8:$B$12"
Попробуйте '.FullSeriesCollection (1) .XValues =" = '"& new_sheet.Name &"'! $ B $ 8: $ B $ 12 "'? Ваш может сбой, если в файле sheet.name есть пробелы. –
Это работает! Если вы хотите сказать это как ответ, я проверю его для вас. Почему это работает? – Parseltongue
Сделано, с объяснениями! –