我是编程领域的全新人物,我开始在Excel中学习VBA建模财务方案。 现在我有一个关于图表XValues的更改的问题,以便更改给定数据集的日期。
我使用Variables存储系列的第一行和最后一行,我想根据我如何定义变量来为VBA提供一个变化的范围来选择XValues。 变量定义为整数。
我的代码:
Sheets("Result").ChartObjects("Chart 2").Activate
ActiveChart.FullSeriesCollection(1).XValues = ActiveWorkbook.Sheets("Data_Portfolio").Range(Cells(RangeStart, 1), Cells(RangeStop, 1))
非常友好地向您解释第二行有什么问题,以及如何解决"应用程序定义或对象定义的错误"。
我提前感谢你们,
尼克
答案 0 :(得分:0)
1)使用工作表名称
完全限定Cells
ActiveChart.FullSeriesCollection(1).XValues = ActiveWorkbook.Sheets("Data_Portfolio").Range(ActiveWorkbook.Sheets("Data_Portfolio").Cells(RangeStart, 1), ActiveWorkbook.Sheets("Data_Portfolio").Cells(RangeStop, 1))
2)还应该确保添加一系列(1),对于某些版本,最好使用SeriesCollection
而不是FullSeriesCollection
。
3)使用Long而不是Integer来避免潜在的溢出。
以下示例:
Option Explicit
Public Sub test()
Dim RangeStart As Long
Dim RangeStop As Long
RangeStart = 1
RangeStop = 5
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Data_Portfolio")
Worksheets("Result").ChartObjects("Chart 2").Activate '<== Is this ActiveWorkbook or ThisWorkbook?
ActiveChart.SeriesCollection.NewSeries '<= added for demo only to ensure present
ActiveChart.SeriesCollection(1).XValues = ws.Range(ws.Cells(RangeStart, 1), ws.Cells(RangeStop, 1)) '< x
ActiveChart.SeriesCollection(1).Values = ws.Range(ws.Cells(RangeStart, 1), ws.Cells(RangeStop, 1)) ' < y copied for test purposes only
End Sub