从用户表单输入更改图表中的范围

时间:2015-06-12 12:37:26

标签: excel vba excel-vba charts range

我创建了一个用户窗体,因此一个人可以输入开始日期和结束日期,以便线图显示所需的信息。目前除了范围更新语法之外我还能正常工作。

我将开始日期数据的地址保存为Ad,结束日期地址的地址保存为Add(两者都是字符串)。

然后我尝试使用这些设置范围,但我做错了。这是代码。

Dim CellX1 As Integer
Dim CellY1 As Integer
Dim CellX2 As Integer
Dim CellY2 As Integer
Dim Ad As String
Dim Add As String

Sheets("Data").Activate
Cells(CellY1, CellX1).Activate
Ad = ActiveCell.Address 'set start address

Cells(CellY2, CellX2).Activate
Add = ActiveCell.Address 'set end address

Sheets("Graph").Activate                                   

ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""A3"""

这是我无法工作的代码行:

ActiveChart.SeriesCollection(1).Values = "=Data!$Ad:Add"
ActiveChart.SeriesCollection(1).XValues = "=Time!$E:$F"

1 个答案:

答案 0 :(得分:0)

应该{​​{1}}那些Set版本。您还可以将系列变量分配给实际的Range而不是地址作为字符串。真的,你应该直接Ranges,这就是我在下面的内容。

完整代码应该是这样的:

Set

请注意,我将Dim CellX1 As Integer Dim CellY1 As Integer Dim CellX2 As Integer Dim CellY2 As Integer Dim Ad As Range Dim Add As Range Set Ad = Sheets("Data").Cells(CellY1, CellX1) 'set start address Set Add = Sheets("Data").Cells(CellY2, CellX2) 'set end address Sheets("Graph").Activate ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = Range("A3") ActiveChart.SeriesCollection(1).Values = Range(Ad, Add) ActiveChart.SeriesCollection(1).XValues = Worksheets("Time").Range("$E:$F") Ad的变量类型更改为Add。这样可以更轻松地为图表创建开始/结束Range