我试图通过Excel VBA在图表中创建ErrorBar,但是我需要宽度为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属性可以工作,但是我是否忽略了某些内容?

最佳答案

我认为问题出在.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

09-18 21:49