2014-01-06 4 views
0

저는 VBA를 처음 사용하기 때문에 간단한 질문이라면 실례합니다. 필자는 각 클라이언트에 대해 채울 템플릿 보고서 ("Client_Name"이라는 제목의 보고서)를 만들었습니다. 즉, 피벗 테이블의 보고서 필터에서 클라이언트를 선택하고 피벗 테이블의 데이터 값을 템플릿에 복사하는 것입니다. 이 문제를 자동화하기 위해, 나는 템플릿을 복제하고 현재 피벗 테이블에서 선택한 클라이언트에 대한 이름을 변경하려면 다음 코드를 만든 것은 :VBA 워크 시트 셀 값에 따라 다름을 선택하십시오.

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 

시트 자체가있을 때 시트 이름이 필요하지 않습니다. 나는 ActiveSheet가 최근 템플릿을 중복된다 원형 오류로 실행되지 않을 것이지만,이 팁 How to avoid using Select in Excel VBA macros

+0

감사하고 내가 데이터를 복사 이동할 때 피벗 워크 시트로 전환 :

독서 권장? 따라서 Pivot 시트로 전환 한 후에는 CopiedSheet (즉, ActiveSheet)가 피벗 시트 자체가되어 더 이상 ActiveSheet가 아닌 복제 된 템플릿으로 이동할 수 없습니다! –

+0

@ user2696883'ActiveSheet'는 Excel에서 제공하는 속성입니다. 시트 활성화를 반영하여 자동으로 변경됩니다. 어느 순간 이건 시트에 대한 참조를 포함합니다. 이 참조를 복사합니다. 귀하의 사본은 자동으로 변경되지 않습니다. – GSerg

관련 문제