VBA テンプレートからグラフ ワークシートをコピーする

VBA テンプレートからグラフ ワークシートをコピーする

マクロのテンプレートとして使用したいワークシート チャートがあります。シートをコピーしてチャート タイプのオブジェクトに割り当てようとしていますが、うまくいきません。

以下のコードには、チャート シートを作成またはコピーするための 2 行の作業コードがあります。

問題はコードの最後の行にあります。シートはコピーされますが、次の行に進む前にエラーが発生します (エラー 424 オブジェクトが必要です)。

なぜこのようなことが起こるのか、またシートを 1 行に割り当てる解決策を誰か説明してもらえますか。

現時点での私の解決策は、テンプレートをコピーして 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 についてはあまり詳しくありませんが、他にも問題があるかもしれません。それでも、これが少しでもお役に立てれば幸いです。

関連情報