【问题标题】:range value out of array范围值超出数组
【发布时间】:2021-06-21 09:32:00
【问题描述】:

我想创建 6 个图表并将它们放入 6 个不同的单元格区域。我定义了一个包含单元格范围的数组。有人可以解释一下为什么这段代码不起作用。 ps:如果我让代码更改高度、宽度、顶部、左侧,它工作得非常好。我 90% 确定它与数组有关。

    Dim i As Integer
    
    Dim varData(5) As range
        Set varData(0) = range("A2:H14")
        Set varData(1) = range("I2:P14")
        Set varData(2) = range("Q2:X14")
        Set varData(3) = range("A16:H28")
        Set varData(4) = range("I16:P28")
        Set varData(5) = range("Q16:X28")
    
    For i = 1 To 6
    
        totalString = ""
        totalStringTwo = ""
        
        ValueAxis = i
        ValueAxisTwo = i
        
        totalString = textBefore + ValueAxis + textVafter
        totalStringTwo = textBeforeTwo + ValueAxisTwo + textVafterTwo
        
        
        
        'chart axis 1'
        ActiveSheet.Shapes.AddChart2(227, xlColumnClustered).Select 'xlLine - lijngrafiek'
        
        
        Set RngToCover = varData(i - 1)
        ChtOb.Height = RngToCover.Height ' resize
        ChtOb.Width = RngToCover.Width   ' resize
        ChtOb.Top = RngToCover.Top       ' reposition
        ChtOb.Left = RngToCover.Left     ' reposition
        
        
        ActiveChart.SetSourceData Source:=Sheets(StrDataPtp).range(totalString)
        ActiveChart.Axes(xlValue).MajorGridlines.Select
        ActiveChart.FullSeriesCollection(1).Delete
        ActiveChart.FullSeriesCollection(1).XValues = totalStringTwo

        
        With ActiveChart
            'X axis name
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "degrees (°)"
            'y-axis name
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "time (s)"
            'chartname'
            .ChartTitle.Text = "axis 1 RCS cycle time"
        End With
        
        

    
    Next i

【问题讨论】:

  • 缺少一堆Sets:Set varData(0) = ...Set varData(1) = ...
  • 感谢您的回复!我在代码中更改了它,但现在代码运行一次而不是六次,所以还有其他问题
  • 图表创建和应用存在几个问题。参考This

标签: excel vba


【解决方案1】:

你已经引入了一个变量StrDataPtp,但没有设置它。此外,您无需依赖ActiveChart

改成

Dim ChtOb as Chart

Set ChtOb.Shapes.AddChart2(227, xlColumnClustered).Chart
        
Set RngToCover = varData(i - 1)
ChtOb.Height = RngToCover.Height ' resize
ChtOb.Width = RngToCover.Width   ' resize
ChtOb.Top = RngToCover.Top       ' reposition
ChtOb.Left = RngToCover.Left     ' reposition

并将所有其他对ActiveChart 的引用更改为ChtObj

注意:您的代码中还有其他问题:

  1. 字符串连接应使用&
  2. 不要在ActiveSheet 上工作。声明并使用 Worksheet 变量
  3. 如果你还没有,Dim 所有你的变量,并使用Option Explicit
  4. 可能还有其他问题。仅凭此代码片段很难确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多