1

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

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

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

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

但是,这是行不通的。

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

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

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

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

4

2 回答 2

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
于 2012-06-30T04:22:18.503 回答
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
于 2012-06-29T16:10:40.137 回答