2013-06-18 1 views
0

Это должно быть очень просто, но я не могу понять синтаксис. Я хочу изменить значения 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"

+1

Попробуйте '.FullSeriesCollection (1) .XValues ​​=" = '"& new_sheet.Name &"'! $ B $ 8: $ B $ 12 "'? Ваш может сбой, если в файле sheet.name есть пробелы. –

+0

Это работает! Если вы хотите сказать это как ответ, я проверю его для вас. Почему это работает? – Parseltongue

+0

Сделано, с объяснениями! –

ответ

2

Попробуйте это:

.SeriesCollection(1).XValues = "='" & new_sheet.Name & "'!$B$8:$B$12"

Если есть какие-либо пробела в листе-х .Name, ваша предыдущая попытка построить деформированную формулу, которая будет вызывать ошибку, например .:

=My Worksheet!A1:B1 является недействительной ссылкой, которая приведет к ошибке #Name?. Когда имя рабочего листа содержит пробелы, вам нужно заключить это имя в одинарные кавычки. Поэтому, вместо того, чтобы пытаться выяснить, когда это необходимо, просто используйте одиночные кавычки, чтобы избежать этой ошибки.

+0

David - вы знаете, почему это не работает для Mac 2011? «Метод или элемент данных не найден». – Parseltongue

+0

Возможно, у меня есть опечатка. Попробуйте '.SeriesCollection (1)' Я не уверен, почему я бы сказал '.FullSeriesCollection (...' потому что это, конечно, не метод или свойство диаграммы. –

+0

Ну, это так. Это признано Excel 2013, просто не Excel 2010 для Mac. – Parseltongue

Смежные вопросы