VBA从模板复制图表工作表


1

我有一个工作表图表,我想用作宏中的模板。我正在尝试复制工作表并将其分配给图表类型的对象,但无法使其正常工作。

代码下面是两行工作代码,用于创建或复制图表。

问题出在代码的最后一行。它会复制工作表,但是在进入下一行之前会出错(需要错误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

Answers:


2

可以肯定的一个问题是Copy方法不会返回对象(它不会返回任何东西),因此您必须首先进行复制,然后获取新表并将其分配给变量。

我想你可以做

Dim SheetBeforeChart3 As Long

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

Set WS_chart3 = Sheets(SheetBeforeChart3 + 1)

我不是很了解Excel VBA,但可能还有其他问题,希望这对您有所帮助。


是的,这与我所做的类似。template.Copy After:=Sheets(Sheets.Count) Set WS_chart = ActiveSheet 这样做的好处是不依赖活动表。请稍等一下,看看是否有其他建议。
gtwebb

在Office 2013上不适用于我:按索引顺序,新工作表位于位置1,但其命名建议位于模板之后。
Georg W.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.