ポイント
- Range.Clear メソッドは次のメソッドの内容を含む。
- Range.ClearComments メソッド → コメント
- Range.ClearNotes メソッド → コメント
- Range.ClearContents メソッド → 値と数式
- Range.ClearFormats メソッド → 書式 (色や罫線、条件付き書式など)
- Range.ClearOutline メソッド → ハイパーリンク
- Range.ClearNotes メソッドと Range.ClearContents メソッドの処理は同じで、コメント削除 (詳細な検証はしていない)
- リセット対象のワークシートをアクティブにする必要はない。
Range.Value = ""
でもリセットが可能。ただし、Range.ClearContents メソッドならば計算式も更新される一方、Range.Value = ""
は対象 Range を参照している計算式が更新されない。そのため、基本的に Range.ClearContents メソッドを使うのがよい。
準備
ワークシート “Sheet1” に次の内容を書き込んだセルを用意する。
- 文字列
- 太字の書式付きセル
- コメント付きセル
- 罫線つきセル
- ハイパーリンク付きセル
- テキストボックス
- 図形
- 画像
これらをすべて VBA からまっさらに削除してリセットいたします♪
VBA コード
標準モジュールを挿入し、呼び出して使えるようにいたします。
Option Explicit ''' <summary> ''' 指定ワークシートを初期化します。 ''' すべてのセルの値、数式、書式 (色や罫線、条件付き書式など)、コメント、ハイパーリンク、 ''' ワークシート上のアウトライン、画像、図形を削除します。 ''' </summary> ''' <param name="strWorksheet">対象ワークシート名</param> Public Sub InitializeSheet(ByVal strWorksheet As String) With Worksheets(strWorksheet) .DrawingObjects.Delete .Cells.Clear .Cells.ClearOutline End With End Sub
次に、確認用のコードです。
Option Explicit Public Sub Test() Call RangeInitializer.InitializeSheet("Sheet1") End Sub
おわりに
「vba ワークシート クリア」などの単語で検索して調べておりました。難しくは無いのと感じましたけれども、どこまで削除すればワークシートをクリアしたことになるのか、ここは少し複雑思いましの。
以下、参考ページです。ありがとう存じます♪
また、次は公式ドキュメントですの。
- Worksheet.Cells プロパティ (Excel)
- Range.Clear メソッド (Excel)
- Range.ClearComments メソッド (Excel)
- Range.ClearContents メソッド (Excel)
- Range.ClearFormats メソッド (Excel)
- Range.ClearNotes メソッド (Excel)
- Range.ClearOutline メソッド (Excel)
以上です。