2012-06-29 3 views
1

Я хотел бы иметь возможность ссылаться на следующий лист в книге с помощью VBA, но не ссылаться на имя листа, поскольку я надеюсь, что смогу применить макрос к нескольким различным книгам ,Ссылка на предыдущий лист в макросе для диаграммы excel

Я пишу макрос Excel, который предназначен для форматирования диаграммы Excel. В заголовке серии диаграммы я хотел бы сделать ссылку на серию ссылкой на ячейку на следующем листе.

Я попытался следующие, который не работает:

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

Однако это не работает.

Каков наиболее эффективный способ получения поля названия сериала диаграммы для ссылки на ячейку в следующей таблице внутри макроса?

Я также попытался следующие, который не работает либо:

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

Пожалуйста, имейте в виду, что это учебное пособие, которое структурировано с диаграммой, то лист, график, лист и т.д. ...

ответ

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
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 
Смежные вопросы