J'essaie de créer ErrorBars dans un graphique via Excel VBA, mais j'ai besoin d'une largeur de 12PT ou de varier. Voici le code que j'utilise, mais ça ne semble pas fonctionner:
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
Je pensais que l'utilisation de la propriété Weight fonctionnerait, mais ai-je négligé quelque chose?
Je pense que le problème est avec .HasErrorBars = True
qui crée déjà une barre d'erreur automatiquement si l'une n'est pas présente, alors que la ligne suivante .ErrorBar
crée une autre.
À ce stade, vous avez deux barres d'erreur, et .Format.Line.Weight = 12
dans mon cas n'a affecté que le premier ajouté automatiquement.
Essayez le réglage .HasErrorBars = False
avant d'utiliser .ErrorBar
et voir si cela fait la différence.
.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
* Une autre chose à essayer est de basculer le .Format.Line.Visible
après les modifications de rafraîchissement.
Selon la documentation de Microsoft, vous devez utiliser 'poids':
ErrorBars -> Border: https://msdn.microsoft.com/en-us/library/aa174210%28v=office.11%29.aspx
Bordure -> Poids: https://msdn.microsoft.com/en-us/library/aa215968%28v=office.11%29.aspx