我使用VBA在Excel 2010中创建的程序中以图形方式绘制数据。我将其发送到另一台装有Excel 2013的计算机上,发现除此图形问题外,其他所有功能均正常运行。
我的代码将创建图形,并完美调整它们的大小,但实际上不会绘制任何数据点的图形。在我的代码中,我还添加和删除了系列,并且我注意到系列的数量在一侧是正确的,但是该系列没有保留我给他们提供的自定义名称。
但是,这里有个转折。当我右键单击图表并单击“选择数据”时,所有数据都会立即弹出,包括我对该系列的所有自定义名称。我什至不去选择数据或任何东西。当我单击它时,所有值都会立即弹出。
这是一张前后相像的imgur专辑。请注意,除了右键单击并选择“选择数据”选项外,我什么也没有做。好像数据已经被选择,但是直到我单击“选择数据”后才显示。
为什么Excel 2013会这样做?如何使这些值实际上通过VBA方法显示?我将在下面添加一个示例代码。
'Setting the range the chart will cover
Set rngChart = ActiveSheet.Range(Cells(Counter + 3, 4), Cells(Counter + 27, 10))
'Dimensioning the chart and choosing chart type
Set co = ActiveSheet.Shapes.AddChart(xlXYScatter, rngChart.Cells(1).Left, rngChart.Cells(1).Top, rngChart.Width, rngChart.Height)
Set cht = co.Chart
Set sc = cht.SeriesCollection
'Remove any default series
Do While sc.Count > 0
sc(1).Delete
Loop
'Setting chart data
'Series 1
With sc.NewSeries
.Name = "=Sheet1!$C$1"
.XValues = "=Sheet2!$A$2:$A$" & SimpleTracker + 1
.Values = "=Sheet2!$B$2:$B$" & SimpleTracker + 1
.MarkerSize = 3
.MarkerStyle = xlMarkerStyleCircle
End With
'Series 2
With sc.NewSeries
.Name = "=Sheet1!$B$1"
.XValues = "=Sheet1!$A$2:$A$" & Counter + 1
.Values = "=Sheet1!$B$2:$B$" & Counter + 1
.MarkerSize = 5
.MarkerStyle = xlMarkerStyleCircle
.MarkerBackgroundColorIndex = 10
.MarkerForegroundColorIndex = 10
End With
'Setting chart labels
With cht
.HasTitle = True
If n = 0 Then
.ChartTitle.Characters.Text = "Simple Fit - CFL Over Time"
ElseIf Range("I" & n) = "Regression Title" Then
.ChartTitle.Characters.Text = Range("J" & n).Text
Else
.ChartTitle.Characters.Text = "Simple Fit - CFL Over Time"
End If
.Axes(xlCategory, xlPrimary).HasTitle = True
If DayTracker = 1 Then
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Days)"
ElseIf HourTracker = 1 Then
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Hours)"
Else
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Minutes)"
End If
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "CFL"
.Axes(xlCategory).HasMajorGridlines = True
.Axes(xlCategory).HasMinorGridlines = True
End With
我还想指出,此代码在Excel 2010中仍然可以完美地工作,并且图形显示仍然可以在Excel 2010中工作。它只是在Excel 2013中不起作用。
感谢您的阅读!如果您有任何疑问或需要澄清,请告诉我。
代替
With sc.NewSeries
和
With cht.SeriesCollection.NewSeries
我在Excel 2013中遇到了相同的问题。我不知道为什么,但是此解决方案对我有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句