在条形图中为系列添加边框

时间:2018-08-01 12:40:03

标签: excel vba excel-vba excel-2016

我正在使用宏将图表插入电子表格中

Option Explicit

Sub Macro1()

    Dim overskrifter As Range
    Dim i As Long
    Dim høgde As Long, breidde As Long

    Call fjernkurver

    i = 1
    høgde = 240: breidde = 350
    Set overskrifter = Oppsummering.Range("C5:L5")

    With Kurver.Shapes.AddChart2(201, xlColumnClustered)
        .Name = "Graf_" & i
        With .Chart.SeriesCollection.NewSeries
            .XValues = overskrifter
            .Values = overskrifter.Offset(i, 0)
            .Name = Oppsummering.Range("B5").Offset(i, 0)
            ' "Olive"
            .Points(1).Format.Fill.ForeColor.RGB = RGB(128, 128, 0)
            ' "Dark khaki"
            .Points(8).Format.Fill.ForeColor.RGB = RGB(189, 183, 107)
            ' Green (Atlantis)
            .Points(9).Format.Fill.ForeColor.RGB = RGB(146, 208, 80)
            With .Format.Line
                .Visible = msoTrue
                .Weight = 0.5
                '.ForeColor.RGB = RGB(0, 0, 205)
                .ForeColor.RGB = RGB(255, 0, 0)
                .Transparency = 0
            End With
        End With
        .Height = høgde
        .Width = breidde
        .Top = 5 + ((i - 1) \ 3) * (5 + høgde)
        .Left = 5 + ((i - 1) Mod 3) * (5 + breidde)
        .Chart.HasTitle = True
        .Chart.ChartGroups(1).GapWidth = 150
        .Chart.ChartGroups(1).Overlap = 0
    End With
End Sub

Sub fjernkurver()
    Dim co As ChartObject

    For Each co In Kurver.ChartObjects
        co.Delete
    Next co
End Sub

在大多数情况下,它都可以正常工作,但是我在这段代码中遇到了一些问题:

        With .Format.Line
            .Visible = msoTrue
            .Weight = 0.5
            '.ForeColor.RGB = RGB(0, 0, 205)
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
        End With

应该在图形的所有条形周围添加边框,红色为RGB(255,0,0),蓝色为RGB(0,0,255)。

但是,据我所知,任何条形图都没有添加边框。有人可以指出我在哪里出问题了吗?

该图表最终看起来像这样: org.springframework.data.jpa.repository.support.SimpleJpaRepository

2 个答案:

答案 0 :(得分:0)

您无法访问seriescollection.newseries的格式,因为它是一种方法 您可以访问和调整seriescollection(1)的格式

class type is: P4Base
 Derived 

您可以以此为指导,以集合或单独的方式访问系列颜色。老实说,您的代码很难遵循且有点混乱。这是一个例子。

    With .chart.SeriesCollection.NewSeries
        .XValues = overskrifter
        .Values = overskrifter.Offset(i, 0)
        .Name = Oppsummering.Range("B5").Offset(i, 0)
        ' "Olive"
        .Points(1).Format.Fill.ForeColor.RGB = RGB(128, 128, 0)
        ' "Dark khaki"
        .Points(8).Format.Fill.ForeColor.RGB = RGB(189, 183, 107)
        ' Green (Atlantis)
        .Points(9).Format.Fill.ForeColor.RGB = RGB(146, 208, 80)
    End With

    With .chart.SeriesCollection(1)
        .Visible = msoTrue
        .Weight = 0.5
        '.ForeColor.RGB = RGB(0, 0, 205)
        .ForeColor.RGB = RGB(255, 0, 0)
        .Transparency = 0
    End With

enter image description here

答案 1 :(得分:-1)

似乎系列的.Format.Line属性适用于条形图的边框以外的其他内容-可能是这是连接例如的数据点的线。折线图或散点图。

要真正勾勒出条形,我替换了有问题的代码;

With .Format.Line
    .Visible = msoTrue
    .Weight = 0.5
    .ForeColor.RGB = RGB(255, 0, 0)
    .Transparency = 0
End With

使用

.Border.LineStyle = xlContinuous
.Border.Color = 9851952
.Format.Line.Weight = 0.5

请不要问为什么.Format.Line.Weight仍然适用于边界,至少我能使它正常工作。给写过the thread where I found the answer on Ozgrid forums的人们的大道具。