我有一个工作表图表,我想将其用作宏中的模板。我试图复制工作表并将其分配给图表类型的对象,但无法使其工作。
下面的代码是两行用于创建或复制图表的工作代码。
问题出在最后一行代码上。它复制了工作表,但在转到下一行之前出错(需要错误 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,但可能还存在其他问题,我希望这能对你有所帮助。