【问题标题】:Referencing previous sheet in macro for excel chart为 Excel 图表引用宏中的上一张表
【发布时间】:2012-06-29 15:21:11
【问题描述】:

我希望能够使用 VBA 引用工作簿中的下一个工作表,但避免引用工作表名称,因为我希望能够将宏应用于许多不同的工作簿。

我正在编写一个用于格式化 Excel 图表的 Excel 宏。在图表的系列标题中,我想让系列名称引用下一个工作表中的一个单元格。

我尝试了以下方法,但不起作用:

ActiveChart.SeriesCollection(1).Name = "='ActiveChart.Next.Select'!$B$1"

但是这不起作用。

让图表的系列名称字段引用宏中以下工作表中的单元格的最有效方法是什么?

我也尝试了以下方法,但也不起作用:

ActiveChart.SeriesCollection(1).Name = "=Sheets(1)!$B$1"

请记住,这是一个由图表构成的工作簿,然后是工作表、图表、工作表等等......

【问题讨论】:

    标签: excel worksheet vba


    【解决方案1】:

    你可以使用这个单行

    ActiveChart.SeriesCollection(1).Name = "='" & Sheets(ActiveChart.Parent.Parent.Name).Next.Name & "'!B1

    1. Sheets(ActiveChart.Parent.Parent.Name 返回下一张表的名称。
    2. ' 对在引用工作表名称时非常重要。即名为 My Sheet 的工作表不能用作 My Sheet!B1,它必须是 'My Sheet'!B1

    【讨论】:

      【解决方案2】:

      看起来您正在尝试使用 VBA 代码而不是经典的 Excel 公式参考。我从未尝试过,但我认为它不会起作用。如果您想将某些内容引用到单元格,则必须使用 =、sheetname、!、单元格地址等良好的旧式清晰语法创建公式:

      =Sheet1!A1
      

      您当然可以使用 VBA 为您创建此公式并将其分配给字段。试试这个代码:

      Dim ws As Worksheet
      Dim formula As String
      
      Set ws = ActiveSheet.Next
      formula = "=" & ws.name & "!A1"
      
      ActiveChart.SeriesCollection(1).name = formula
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多