Excel VBA - 调整颜色线和X轴间隔

时间:2012-06-04 10:21:52

标签: excel vba excel-vba charts

我使用Excel VBA创建图表,我想调整线条颜色和x轴间隔。

以下是代码:

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...形式显示数据。

1 个答案:

答案 0 :(得分:6)

在折线图中,X轴'minimumscale,maximum scale,majorunit和minorunit是没有意义的。即使标签显示数字,X值也只是没有解释数值的类别。

您应该更改为XY图表,这将允许使用minimumscale,maximum scale,majorunit和minorunit完全控制轴刻度。当然,XY图表允许使用与折线图中相同的系列标记和线条格式,但令人困惑的术语将永远存在。

如果由于某种原因你决定坚持使用折线图,你可以使用 ActiveChart.Axes(xlCategory).TickLabelSpacing = 2