VBA는 템플릿에서 차트 워크시트를 복사합니다.

VBA는 템플릿에서 차트 워크시트를 복사합니다.

매크로에서 템플릿으로 사용하고 싶은 워크시트 차트가 있습니다. 시트를 복사하여 차트 유형의 개체에 할당하려고 하는데 작동하지 않습니다.

아래 코드에는 차트 시트를 생성하거나 복사하는 두 줄의 작업 코드가 있습니다.

문제는 코드의 마지막 줄에서 발생합니다. 시트를 복사했지만 다음 줄로 이동하기 전에 오류가 발생했습니다(오류 424 개체 필요).

이런 일이 발생하는 이유와 시트를 한 줄에 할당하는 솔루션을 설명할 수 있는 사람이 있습니까?

지금 내 해결책은 템플릿을 복사한 다음 WS_chart3을 활성 시트로 설정하는 것입니다. 피할 수 있다면 활성 시트에 대한 참조를 좋아하지 않습니다.

Sub test()

Dim WS_chart2 As Chart
Dim WS_chart3 As Chart

    'adds chart sheet but doesn't use a template
    Set WS_chart2 = Charts.Add(After:=Sheets(Sheets.Count))

    'adds sheet but doesn't asign in to variable WS_chart2
    Sheets("template").Copy After:=Sheets(Sheets.Count)

    'adds chart sheet but then errors out
    Set WS_chart3 = Sheets("template").Copy(After:=Sheets(Sheets.Count))

End Sub

답변1

한 가지 확실한 문제는 Copy 메서드가 개체를 반환하지 않는다는 것입니다(아무 것도 반환하지 않음). 따라서 먼저 복사본을 만든 다음 새 시트를 가져와 변수에 할당해야 합니다.

그냥 하시면 될 것 같아요

Dim SheetBeforeChart3 As Long

SheetBeforeChart3 = Sheets.Count
Sheets("template").Copy After:=Sheets(SheetBeforeChart3)

Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)

저는 Excel VBA를 잘 모르지만 다른 문제가 있을 수 있습니다. 이것이 여러분에게 조금이라도 도움이 되기를 바랍니다.

관련 정보