2014-01-06 6 views
0

Я довольно новичок в VBA, поэтому, пожалуйста, извините меня, если это простой вопрос! Я создал шаблонный отчет (под названием «Client_Name»), который я хочу заполнить для каждого клиента - по сути, все это включает в себя выбор клиента в фильтре отчетов сводной таблицы и копирование значений данных сводной таблицы в шаблон. Для автоматизации этого я создал следующий код, чтобы дублировать шаблон и переименовать его для клиента, выбранного в сводной таблице в настоящее время:VBA Worksheet Select Dependent On Cell Value

Sheet_Name_To_Create = Sheets("Pivot").Range("B1").Value 
Sheets("Client_Name").Select 
Sheets("Client_Name").Copy After:=Sheets(Sheets.Count) 
Sheets(ActiveSheet.Name).Name = Sheet_Name_To_Create 

Мой следующий шаг должен был бы вернуться к сводной таблицы («Стержень» рабочий лист) и скопировать данные на вновь созданный рабочий лист клиента. Однако имя рабочего листа, очевидно, будет отличаться для каждого клиента. Есть ли способ ссылаться на код VBA, чтобы выбрать рабочий лист, имя которого совпадает с именем клиента, отображаемого в отчетном фильтре сводных таблиц?

ответ

0

Sheets(ActiveSheet.Name) - неудобный способ сказать ActiveSheet.

Просто зарегистрируйте ActiveSheet в переменной после копирования.

Dim CopiedSheet as Worksheet 
Set CopiedSheet = ActiveSheet 

Вам не нужно имя листа, если у вас есть сам лист.

Рекомендуемая литература: How to avoid using Select in Excel VBA macros

+0

Спасибо за этот совет, хотя я бы не впадать в круговом ошибки при этом ActiveSheet является недавно дублируется шаблон, а затем переключается на сводную таблицу, когда я двигаюсь, чтобы скопировать данные? Поэтому, как только я переключился на лист Pivot, CopiedSheet (то есть ActiveSheet) теперь является самим Pivot-листом и не может быть перенаправлен на дублированный шаблон, который больше не является ActiveSheet! –

+0

@ user2696883 'ActiveSheet' - это свойство, предоставляемое Excel. Он автоматически изменяется для отражения активации листа. В любой момент он содержит ссылку на лист. Вы копируете эту ссылку. Ваша копия не изменится автоматически. – GSerg