多くのワークシートとグラフを生成するマクロがあります。また、生成された各ワークシート/チャートの名前と数量が決して同じではないように、さまざまなサブルーチンが実行されます。定数は、ユーザのUIであるHOMEワークシートであり、影響を受けないようにしたいと考えています。VBA Excel:1つを除くブック内のすべてのグラフとグラフを削除する
作業中のワークシート(つまりHOME)以外のすべてのワークシートの削除についても同様の質問があります。ここに私がこれまで持っているものがあります。
Sub ZRESET()
Dim ws As Worksheet, wb As Workbook
Set wb = ActiveWorkbook
Sheets("HOME").Select
Application.DisplayAlerts = False
For Each ws In wb.Worksheets
If ws.Name <> "HOME" Then
ws.Delete
End If
If Chart.Name = "" Then
Charts.Delete
End If
Next
Application.DisplayAlerts = True
Range("B5:E5,B9:E9,B13:E13,B14:E14").ClearContents
Range("A1").Select
End Sub
ワークシートがうまく削除されていますが、ハングアップはグラフです。私はチャートを削除するためにさまざまな試みを試みましたが、時にはそれらは機能します(つまり、FORループとIF文の外にCharts.Deleteを配置する)。しかし、これは実際にはワークブックにチャートを持たせる必要があります。時には、ユーザーは単にワークシートを作成できますが、グラフは作成できません。
私のHOMEシートをそのままにして、SHEETS および/またはチャールズを削除することを私の目標としていますか?
あなたも(あなたがグラフシートを意味している場合)のチャートを削除したい場合は、むしろWorksheets' ''よりSheets'コレクションを参照する必要があります。 – SJR
こんにちは、ジョシュ、他のシートのチャートを削除することがありますが、そうでない場合がありますか?またはチャートが見つからない場合に何らかのエラーが発生しましたか? – perfo
@SJRの投稿に追加する。 Excelには3種類のシートがあります。 ** 1)**ワークシート(起動時に読み込まれる標準タブ)。 ** 2)**チャートシート(チャートは別のタブとして設定されています** 3)**マクロシート(VBAのみが貼られているシート) 'Worksheets'コレクションはワークシートへの** **のみを参照します。 –