2015-04-26 16 views
6

Próbuję utworzyć belki błędów na wykresie za pomocą arkusza Excel VBA, ale potrzebuję szerokości 12PT lub zmiany. Oto kod używam, ale to nie wygląda jak to działa:Nie można zmienić szerokości niestandardowych belek błędów

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 

Pomyślałem stosując właściwość Waga będzie działać, ale ja coś przeoczyć?

+0

Działa dobrze dla mnie w 2010 roku. Co widzisz? – Rory

+0

Czy szerokość paska błędu wynosi 12pt? Było to tylko dla mnie około 4. – jDave1984

+0

Tak, to było. To samo w 2016. – Rory

Odpowiedz

2

Myślę, że problem jest z .HasErrorBars = True który automatycznie tworzy pasek błędów, jeśli jeden nie jest obecny, podczas gdy następny wiersz .ErrorBar tworzy inny.

W tym momencie masz dwa paski błędów, a .Format.Line.Weight = 12 w moim przypadku dotyczy tylko pierwszego automatycznie dodanego.

Spróbuj ustawić .HasErrorBars = False przed użyciem .ErrorBar i sprawdź, czy robi różnicę.

.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 

* Inną rzeczą jest, aby spróbować przełączyć .Format.Line.Visible po zmianach, aby odświeżyć.