无法更改自定义错误栏的宽度

时间:2015-04-26 23:00:59

标签: excel excel-vba charts vba

我试图通过Excel VBA在图表中创建ErrorBars,但我需要宽度为12PT,或者要改变。这是我正在使用的代码,但它看起来并不像以下:

Set s = .SeriesCollection.NewSeries() 
With s 
    .Name = "=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("Activity").Range.Column) & "$" & sourceRow 
    .XValues = "=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("DateMid").Range.Column) & "$" & sourceRow 
    .Values = "=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("Loc1").Range.Column) & "$" & sourceRow 
    .HasErrorBars = True 
    .ErrorBar Direction:=xlX, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:="=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("BarLength").Range.Column) & "$" & sourceRow, MinusValues:="=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("BarLength").Range.Column) & "$" & sourceRow 
    Set eB = .ErrorBars 
    With eB 
        With .Format.Line 
            .Visible = msoTrue
            .Style = msoLineSingle
            .Weight = 12
        End With
        .EndStyle = xlNoCap
    End With
    .HasDataLabels = True
    Set dLabels = .DataLabels
    With dLabels
        .Format.TextFrame2.TextRange.InsertChartField msoChartFieldRange, "=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("Activity").Range.Column) & "$" & sourceRow
        .ShowRange = True
        .ShowSeriesName = False
        .ShowValue = False
    End With
End With

我认为使用Weight属性会起作用,但是我忽略了什么吗?

2 个答案:

答案 0 :(得分:2)

我认为问题在于.HasErrorBars = True已经自动创建了一个错误栏(如果一个不存在),而下一行.ErrorBar会创建另一个错误栏。

此时您有两个错误栏,我的案例中.Format.Line.Weight = 12仅影响第一个自动添加的错误栏。

在使用.HasErrorBars = False之前尝试设置.ErrorBar,看看它是否有所作为。

.HasErrorBars = False
.ErrorBar Direction:=xlX, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:="=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("BarLength").Range.Column) & "$" & sourceRow, MinusValues:="=GraphicSchedule!$" & getColumn(objList.ListColumns.Item("BarLength").Range.Column) & "$" & sourceRow 

*要尝试的另一件事是在更改后切换.Format.Line.Visible以进行刷新。

答案 1 :(得分:-2)