2012-06-04 3 views
1

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

Ниже приведен код:

Sub add_cpu_chart(server_hostname, site) 
    On Error Resume Next 

    Dim rpt_site As String 
    rpt_site = site 

    Set tbl = ThisWorkbook.Sheets(server_hostname).ListObjects(1) 
    strTableName = tbl.Name 
    strTableRange = tbl.Range.Address 

    Dim m_s_name, m_e_name As Date 

    m_s_name = CDate(fromDateStr) 
    m_e_name = CDate(toDateStr) 

    'Create new embedded chart 
    Set shp = ThisWorkbook.Sheets(server_hostname).Shapes.AddChart 

    'Position Shape over range 

    shp.Top = 100 
    shp.Left = 200 

    With shp 
     With .Chart 
      'Specify source data and orientation 
      '.SetSourceData Source:=ActiveSheets.Range(Table1 & "[#All]"), _ 
      'PlotBy:=xlRows 
      .SetSourceData Source:=ThisWorkbook.Sheets(server_hostname).Range(strTableName & "[#All]") 
      .ChartType = xlLineMarkers 
      .SetElement (msoElementChartTitleAboveChart) 
      .HasTitle = True 
      .ChartTitle.Text = "CPU Utilization of " & server_hostname & " in " & _ 
      rpt_site & " (" & Format(m_s_name, "dd-Mmm") & " to " & Format(m_e_name, "dd-Mmm yyyy") & ")" 
      .ChartTitle.Font.Size = 14 
      '.ChartArea.Font.Size = 14 
      .Legend.Delete 

      .SetElement (msoElementPrimaryValueAxisTitleRotated) 
      .Axes(xlValue, xlPrimary).AxisTitle.Text = "CPU Utlization (%)" 
      .Axes(xlValue, xlPrimary).AxisTitle.Font.Size = 10 
      .Axes(xlValue).MinimumScale = 0 
      .Axes(xlValue).MinorUnit = 2 
      .Axes(xlValue).MaximumScale = 100 
      .Axes(xlValue).MajorUnit = 20 
      .Axes(xlValue).TickLabels.NumberFormat = "General" 

      .SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis) 
      .Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date of the Month" 
      .Axes(xlCategory, xlPrimary).AxisTitle.Font.Size = 10 
      '.Axes(xlCategory).MajorUnit = 1 
      .Axes(xlCategory).TickLabels.NumberFormat = "d" 
      With .PlotArea.Format.Fill 
       .Visible = msoTrue 
       .ForeColor.ObjectThemeColor = msoThemeColorBackground1 
       .ForeColor.TintAndShade = 0 
       .ForeColor.Brightness = -0.150000006 
       .Transparency = 0 
       .Solid 
      End With 
     End With 
    End With 
End Sub 

Я хочу, чтобы изменить цвет линии на красный - как в Excel 2003 - а также изменить данные в интервале, разделенных на 2 дня. В настоящее время данные находятся в форме 1,2,3,4... Я хочу отобразить данные в форме 1,3 ,5....

+3

'Я хочу показать 1, 3, 5..' Итак, где Вы застряли? Какую ошибку вы получаете? Хотя я сомневаюсь, что вы получаете какую-либо ошибку, когда начинаете с 'On Error Resume Next'. Удалите эту строку :) –

+0

@ Иван Чан, если вы найдете полезное решение, которое разрешает вашу проблему, отметьте его как принятый. В противном случае люди могут не решаться ответить на ваши вопросы полезным способом. – JackOrangeLantern

ответ

6

В линейном графике минимальная шкала X, максимальный масштаб, основной и второстепенный объекты не имеют смысла. Значения X - это просто категории, которые не имеют интерпретированных числовых значений, даже если эти метки показывают цифры.

Возможно, вы должны перейти на диаграмму XY, которая позволит полностью контролировать масштаб оси с использованием минимальной шкалы, максимального масштаба, основного и второстепенного значения. Конечно, диаграмма XY позволяет одинаковое форматирование маркеров и линий серий, как на линейной диаграмме, но запутанная терминология будет жить вечно.

Если по какой-то причине вы решили придерживаться линии диаграммы, вы можете использовать ActiveChart.Axes (xlCategory) .TickLabelSpacing = 2

+0

+1 от графического мастера. thx Jon –

+0

Я не знаю, как принимать ответы –

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