【问题标题】:Creating chart using two ranges, both relative cells references使用两个范围创建图表,两个相对单元格引用
【发布时间】:2014-10-01 18:30:42
【问题描述】:

我正在创建一些 vba 代码来创建图表。我有以下代码:

ActiveChart.SetSourceData Source:=Range( (ActiveCell.Offset(-4, 0), ActiveCell.Offset(-7, 0)), (ActiveCell.Offset(-4, 2), ActiveCell.Offset(-7, 2)))

我有一个 3 列 8 行的单元格区域。我将选择单元格 A1,然后运行 ​​vba 代码。我希望 vba 代码选择单元格 A4:A8 C4:C8(不是 B4:B8),然后从中创建图表。

这需要是相对的原因是因为我将移动我多次运行 vba 代码的源单元,因为我多次运行 vba 代码。

【问题讨论】:

    标签: excel charts range vba


    【解决方案1】:

    您可以对您编写的代码进行一些更改。

    首先,如果您选择了单元格A1,则ActiveChart 变量将为空,因为您将选择一个单元格,而不是一个图表。这可以通过在代码中选择图表来解决。

    其次,ActiveCell 变量会随着单元格的变化而变化。您将需要缓存该值或更新您的偏移量以匹配范围中前一个单元格的偏移量。我会推荐前一个选项。

    最后,偏移量似乎从 A1 的起点偏移了 1。

    我做了一些更改,子如下所示。请注意,此代码中图表的名称是 MyChart,但可以轻松更改为您在工作表中指定的任何名称。

    Sub UpdateChart()
        Dim cell As Range
        Set cell = ActiveCell
    
        ActiveSheet.ChartObjects("MyChart").Activate
        ActiveChart.SetSourceData Source:=Range(Range(cell.Offset(3, 0), cell.Offset(6, 0)), Range(cell.Offset(3, 2), cell.Offset(6, 2)))
    End Sub
    

    【讨论】:

      【解决方案2】:

      这是我的版本:

      Sub ject()
          Dim ws As Worksheet, ac As Range, ch As Chart
          Set ws = ActiveSheet: Set ac = ActiveCell
          With ws
              On Error Resume Next
              .ChartObjects("newchart").Delete
              On Error GoTo 0
              .Range(ac.Offset(3, 0).Resize(4).Address & "," & _
                  ac.Offset(3, 2).Resize(4).Address).Select
              .Shapes.AddChart(xlColumnStacked, ac.Offset(0, 4).Left, _
                  ac.Offset(0, 4).Top, 300, 250).Name = "newchart"
          End With
      End Sub
      

      这会从当前选定工作表上的当前选定单元格创建一个ColumnStacked 条形图
      图表放置在活动单元格的第 5 个单元格上。 HTH。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-07
        • 1970-01-01
        • 2020-08-24
        • 2014-12-08
        • 1970-01-01
        相关资源
        最近更新 更多