目前正在开发一个可以自动制作图表的 vba 脚本。我想添加一个数据表,方法是:.HasDataTable = True
但是我想以百分比形式显示系列值。目前,该值定义为 Double,包含所有值,但格式不正确。
使用 Format() 或 FormatPercent() 将提供正确的值,但返回字符串。这适用于数据表,但不适用于图表本身,因为它不再识别这些值。
我的问题归结为是否可以在数据表和图表中将值显示为百分比?如果没有 VBA,只需在单元格中格式化数据即可轻松完成。问题是格式化会返回字符串,但图表需要整数或双精度数。
欢迎任何帮助,如果问题不清楚,请告诉我。
以下是部分代码。如果我将 Ratio 设置为字符串并使用 FormatPercent(),我会获得所需的格式,但 Ratio 中的值不再翻倍,因此它不会提供所需的图表。
Dim Ratio() As Double
Dim labels() As String
ReDim Ratio(1 To Height)
ReDim labels(1 To Height)
For Each Column In sArray
labels(i) = Sheets(DataSheetName).Cells(LabelsRow, Column)
Ratio(i) = Math.Round(Sheets(DataSheetName).Cells(LabelsRow + 3, Column), 2)
i = i + 1
Next Column
Set myChtObj = Sheets(DrawSheetName).ChartObjects.Add(Left:=Left, Width:=Width, Top:=Top, Height:=HeightGraph)
Dim srsNew1 As Series
' Add the chart
With myChtObj.Chart
.ChartArea.Fill.Visible = False
.ChartArea.Border.LineStyle = xlNone
.PlotArea.Format.Fill.Solid
.PlotArea.Format.Fill.Transparency = 1
.HasTitle = True
.ChartTitle.text = Title
.HasLegend = False
.Axes(xlValue).TickLabels.NumberFormat = "0%"
.Axes(xlCategory, xlPrimary).HasTitle = False
'add data table
.HasDataTable = True
' Make Line chart
.ChartType = xlLine
' Add series
Set srsNew1 = .SeriesCollection.NewSeries
With srsNew1
.Values = Ratio
.XValues = labels
.Name = "Ratio"
.Interior.Color = clr3 'RGB(194, 84, 57)
End With
End With
除了上述内容之外,下面的图片可能最能说明我想要的内容。