0
特定のワークシートでチャートをループし、すべてのシートの最後に新しいチャートシートに移動しようとしています。また、グラフシートの名前を変更してタブの色を変更したいと思います。ここで埋め込みチャートを新しいチャートシートに移動してシート名を変更する
が私のコードです:
Dim ws As Worksheet, co As ChartObject, c As Chart
Set ws = ThisWorkbook.Sheets("nameofSheet")
ws.Activate
For Each co In ws.ChartObjects
co.Activate
Set c = co.Chart
'move chart to new sheet at the end
c.Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
'rename chart sheet
c.Name = "newChartSheetName"
'change colour
c.Tab.Color = RGB(1,1,1)
Next co
しかし、それが動作し、エラーをスローしません:Run-time error '1004': Method 'Move' of object '_Chart' failed
私は広範囲に検索したが、この問題への答えを見つけることができませんでした。私はco(ChartObject
)を直接使ってみましたが、うまくいきませんでした。私はそれに何かをする前にオブジェクト.Activate
する必要があることを読んだが、それも動作しませんでした。
感謝を! 'set c = co.Chart'の直後に' Set c = c.Location(where:= xlLocationAsNewSheet、Name:= chartSheetName) 'を置き、' move'で世話をしているので 'c.Name = chartSheetName'を削除しました。しかし、これは最初のチャートでのみ機能し、オブジェクト '_Chart' failed'エラーの 'Method 'Location'をスローします。新しいチャートシートを削除してコードを再実行すると、再び最初のチャートでのみ機能します。 – ChrisVolkoff
各チャートシートに異なる名前を使用していますか? – Rory
ああ!各チャートの正しい名前を生成することになっていました(明らかに '' newChartSheetName "'を文字通り使用していませんが)、実際には動作しません。私はそれをデバッグします。どうもありがとう! – ChrisVolkoff