VBA - 用变量

时间:2018-05-15 15:59:11

标签: vba excel-vba charts visualization excel

我是编程领域的全新人物,我开始在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))

非常友好地向您解释第二行有什么问题,以及如何解决"应用程序定义或对象定义的错误"。

我提前感谢你们,

尼克

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