2016-06-08 2 views
0

Я пытаюсь добавить метки осей в свою диаграмму. Ниже приведена часть моего кода.Excel VBA - Графика оси форматирования диаграмм

Во-первых, мой код не создает ошибку при запуске строки, которая добавляет заголовок главной оси. Несмотря на отсутствие регистрации ошибки, в моей диаграмме по-прежнему отсутствует текстовое поле для названия оси.

Во-вторых, я не знаю, почему мой код генерирует ошибку, когда я пытаюсь добавить заголовок вторичной оси. Я скопировал этот раздел кода из макрорекордера, поэтому я вполне уверен, что синтаксис верен.

Спасибо за вашу помощь!

Dim myChart As Chart, cht As ChartObject 
Dim rngChart As Range, destSht As String 
Dim rngData As Range 

destSht = ActiveSheet.Name 
Set myChart = Charts.Add 
Set myChart = myChart.Location(where:=xlLocationAsObject, Name:=destSht) 

With ActiveSheet.ListObjects("Table1").DataBodyRange 
Set rngData = Union(.Columns(2), .Columns(9), .Columns(10), .Columns(11), .Columns(12)) 
End With 

With myChart 
.SetSourceData Source:=rngData, PlotBy:=xlColumns 
.ChartType = xlColumnClustered 
.ChartStyle = 209 
.FullSeriesCollection(1).Name = "AHT" 
.SetElement (msoElementChartTitleAboveChart) 
    .ChartTitle.Text = "AHT/Transfer Metrics" 

'*****PROBLEM SECTION***** 
.SetElement (msoElementPrimaryValueAxisTitleAdjacentToAxis) 
'*****Below is the line of code that is giving me an error***** 
.SetElement (msoElementSecondaryValueAxisTitleAdjacentToAxis) 
'******    ***** 

With .FullSeriesCollection(2) 
    .Name = "Target AHT" 
    .ChartType = xlLine 
    .AxisGroup = 1 
    .Select 
     With Selection.Format.Line 
      .Weight = 1 
     End With 
End With 
With .FullSeriesCollection(3) 
    .ChartType = xlLineMarkers 
    .AxisGroup = 2 
    .Name = "Transfers" 
    .Select 
     With Selection.Format.Line 
      .Weight = 1.75 
     End With 
End With 
With .FullSeriesCollection(4) 
    .ChartType = xlLine 
    .AxisGroup = 2 
    .Name = "Target Transfers" 
    .Select 
     With Selection.Format.Line 
      .Weight = 1 
     End With 
End With 
End With 

ответ

1

Я думаю, это потому, что вы еще не создали вторичную ось. Попробуйте поместить эти 2 строки после того, как вы отформатируете все свои серии.

+0

Это решило мою вторую указанную проблему. Тем не менее, он по-прежнему не заполняет поле заголовка первичной оси. Я не получаю ошибку для этого, похоже, просто игнорирует мой код. –

2
With .Axes(xlValue, xlPrimary) 
     .HasTitle = True 
     .AxisTitle.Text = "AHT (s)" 
    End With 
Смежные вопросы