ループ処理でアクティブシート名と比較し削除
繰り返し処理の中で、1つずつ「ワークシートの名前」と「アクティブシートの名前」を比較し、名前が違う(=アクティブシートではない)時に削除処理をおこないます。
コード
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20  | 
						Dim jogaiSheetNm    As String       '削除しないシート名 Dim targetSheet     As Worksheet    '繰り返し用 'アクティブシート名を取得 jogaiSheetNm = ActiveSheet.Name '警告メッセージを表示しない Application.DisplayAlerts = False '削除処理 For Each targetSheet In Worksheets     If targetSheet.Name <> jogaiSheetNm Then         targetSheet.Delete     End If Next '警告メッセージを表示 Application.DisplayAlerts = True  | 
					
解説
今回の例では、変数jogaiSheetNmに、アクティブシート名を保存しています。
アクティブシートはユーザのクリックなどが原因で、他のシートに変化する可能性があります。
なので、一度変数にアクティブシート名を保存することで、アクティブシートが変化しても影響を受けないようにしています。
繰り返し処理(For Each)の中で、targetSheet.Name(処理しているシートの名前)とjogaiSheetNm(アクティブシートの名前)を比較して、異なる時そのシートを削除しています。
POINT
アクティブシートを扱う時は、変数に保存しよう。
 
その他テクニックは、次の記事を参考にしてください。

【VBA】ワークシートの削除とテクニック
ワークシートを削除する時は、Deleteメソッドを使います。
削除するシートは、「シート名」や「インデックス(何番目)」で指定できます。
シート名で指定し削除
Worksheets("○○").Deleteと書き、○○の部...
 
