我正在尝试使用vb6创建一个excel图表。而不是提供excel范围我试图喂养阵列。我得到一个错误。 这是我正在处理的代码
Private Sub CreateChart(Optional ByVal ChartTitle As String _
, Optional ByVal xAxis As Excel.Range _
, Optional ByVal yAxis As Excel.Range _
, Optional ByVal ColumnName As String _
, Optional ByVal LegendPosition As XlLegendPosition = xlLegendPositionRight _
, Optional ByVal rowIndex As Long = 2 _
, Optional ByRef ChartType As String = xlLineMarkers _
, Optional ByVal PlotAreaColorIndex As Long = 2 _
, Optional ByVal isSetLegend As Boolean = False _
, Optional ByVal isSetLegendStyle As Boolean = False _
, Optional ByVal LegendStyleValue As Long = 1)
Const constChartLeft = 64
Const constChartHeight = 300
Const constChartWidth = 700
Dim xlChart As Excel.ChartObject
Dim seriesCount As Long
Dim ColorIndex As Long
Dim j As Long
With mWorksheet
.Rows(rowIndex).RowHeight = constChartHeight
Set xlChart = .ChartObjects.Add(.Rows(rowIndex).Left, .Rows(2).Top, constChartWidth, constChartHeight)
End With
With xlChart.chart
.ChartType = ChartType
.SetSourceData Source:=marrayPOClient, PlotBy:=marrayPOSKU
.SeriesCollection(1).XValues = marrayPOClient
.HasTitle = True
.Legend.Position = LegendPosition
.Legend.Font.Size = 7.3
.Legend.Font.Bold = True
.Legend.Border.LineStyle = xlNone
.ChartTitle.Characters.Text = ChartTitle
.ChartTitle.Font.Bold = True
.Axes(xlValue).TickLabels.Font.Size = 8 ' yAxis Labels
.Axes(xlCategory).TickLabels.Font.Size = 8 ' xAxis Labels
.PlotArea.Interior.ColorIndex = PlotAreaColorIndex
.PlotArea.Interior.ColorIndex = 15
.PlotArea.Interior.PatternColorIndex = 1
.PlotArea.Interior.Pattern = xlSolid
End With
End Sub
是否可以将数组用于图表。如果可能的话,我的错误是什么。
答案 0 :(得分:1)
正如Mat的Mug所说,SetSourceData
需要Range
,但您可以使用其他方法获得结果
替换
.SetSourceData Source:=marrayPOClient, PlotBy:=marrayPOSKU
与
.SeriesCollection.NewSeries
.SeriesCollection(1).Values = marrayPOClient
这将创建一个没有源的新系列,然后将该数组指定为系列值
答案 1 :(得分:0)
Chart.SetSourceData的Range
参数需要Source
个对象,XlRowCol
参数需要PlotBy
枚举值。
我假设 marrayPOClient
和marrayPOSKU
都是数组,因为他们的名字暗示(你没有显示他们被宣布的位置)以及如何分配它们,因此我们无法知道它们的类型或价值),但您需要为第一个参数提供Range
,还可以选择xlColumns
或xlRows
对于第二个参数。