【问题标题】:Change range in chart from userform input从用户表单输入更改图表范围
【发布时间】:2015-06-12 12:37:26
【问题描述】:

我制作了一个用户表单,这样人们就可以输入开始日期和结束日期,这样折线图就会显示所需的信息。目前,除了范围更新语法外,我一切正常。

我将开始日期数据的地址保存为 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"

【问题讨论】:

    标签: vba excel charts range


    【解决方案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")
    

    请注意,我将AdAdd 的变量类型更改为Range。这样可以更轻松地为图表创建开始/结束Range

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2023-04-08
      • 2021-08-24
      • 2019-11-25
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多