为宏图表引用宏的前一个工作表

时间:2012-06-29 15:21:12

标签: excel-vba worksheet vba excel

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

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

我尝试了以下无法正常工作:

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

然而这不起作用。

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

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

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

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

2 个答案:

答案 0 :(得分:1)

你可以使用这个单行

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

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

答案 1 :(得分:0)

看起来您正在尝试使用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