セルの編集 DeleteとClearの使い分け 削除とクリアの違い

vbadeleteeyecatch

エクセルVBAでデータの削除消去のために使うメソッドに、DeleteメソッドとClearメソッドがあります。これらは似て非なるもの同士です。
使い分けが必要になりますので、是非覚えておきましょう。

こんにちは じゅんぱ店長 (@junpa33) です。

Excel VBAを実務で利用しているときに、” このデータを消したい ” っていう時が必ずありますよね。

セルのデータであったり、データ行全部であったり、表全体であったり、シート自体であったり、

事によったら、エクセルファイルそのものであったりするでしょう。

今回の話は、” 消したい ” を行う「 Delete と Clear 」というメソッドについてです。

削除とクリアの違い

vbadeletepp010

エクセルVBAで、「データを消す」ために利用するコードとしては、

「 Delete」か「Clear 」というメソッドになります。

「データが消去される」という最後の到達点は同じでも、それぞれに機能が違いますので使い分けが必要です。

VBAの用語的にも、データを削除するという時は、「Delete」を使って、

データをクリア・消去とかいう時は「Clear」を使うのが一般的です。

言うなれば、使い分け的には

ノートの白紙ページに書いた似顔絵を、消しゴムで消すのが「Clear」で、書いたページ自体を破いて捨ててしまうのが「Delete」ということになります。

DeleteとClearの使い分けを対象別に説明

vbadeletepp011

DeleteとClearの使い分けを知るのは、実際に実行時の動作を見るのが早わかりです。

使うサンプルはこのデータ表です。

vbadeletep000

セルのデータを消す場合

セルB5を消します。

  • Deleteメソッドでは、『セルD5そのものを削除』しますので、空っぽになったD5セル位置が、上詰めで元D6セル以下のセルで埋められます。
  • Clearメソッドでは、『セルD5の値(データ)がクリア』されます。D5セルの値は空の状態になります。

Deleteメソッドを使う

VBA
Sub Deleteサンプル1()
    Range("B5").Delete
End Sub
vbadeletep001

Clearメソッドを使う

VBA
Sub Clearサンプル1()
    Range("B5").Clear
End Sub
vbadeletep002

行のデータを消す場合

セルD5の行を消します。

  • Deleteメソッドでは、『セルD5のある行そのものを削除』しますので、空っぽになったD5セルの行位置が、上詰めで元D6セル以下のセルの行で埋められます。
  • Clearメソッドでは、『セルD5の行にあるセルの値(データ)がクリア』されます。D5セルのある行のセルの値は空の状態になります。

Deleteメソッドを使う

VBA
Sub Deleteサンプル2()
 Range("B5").EntireRow.Delete
End Sub
vbadeletep003

Clearメソッドを使う

VBA
Sub Clearサンプル2()
 Range("B5").EntireRow.Clear
End Sub
vbadeletep004

シートのデータを消す場合

セルD5のあるシート(Sheet1)を消します。

  • Deleteメソッドでは、Sheet1そのものが削除されてしまいました。
  • Clearメソッドでは、Sheet1のセルにあった値全てクリアされました。

Deleteメソッドを使う

VBA
Sub Deleteサンプル3()
  Worksheets("Sheet1").Delete
End Sub
vbadeletep005

Clearメソッドを使う

VBA
Sub Clearサンプル3()
  Worksheets("Sheet1").Cells.Clear
End Sub
vbadeletep006

Deleteメソッド使用時の注意点

Deleteを実行するときには、エクセルが警告メッセージを発します。

vbadeletep007

このメッセージの表示でVBAコードの進行がSTOPしてしまいますので、停止させたくない場合はVBAコード中にメッセージ非表示コードを記述することが必要です。

VBA
Sub Deleteサンプル3()
    Application.DisplayAlerts = False
    Worksheets("Sheet1").Delete
    Application.DisplayAlerts = True
End Sub

警告を出すプログラム実行コード前に「Application.DisplayAlerts = False」

実行後には「Application.DisplayAlerts = True」で元に戻しておきます。

Clearメソッド使用時の注意点

ClearメソッドはRangeオブジェクトに対して実行されますので、

シートの全データについて行う場合は、シートのすべてのセルに対してという

Worksheets(“Sheet1”).Cells」の記述方法を取ります。

DeleteとClearメソッドそれぞれの使い方

vbadeletepp012

DeleteとClearメソッドの使い方を説明します。

Clearメソッド

ClearメソッドはRangeオブジェクトに対して行います。

セルをクリアするといっても、「全て」、「コメント」、「値と数式」「書式」など目的によって「色々な種類のClear」があります。

詳しくは別記事で特集していますので参考にしてください。

vbacleareyecatch シートクリアーを目的のメソッド別にVBA最速理解

Deleteメソッド

Deleteの使い方について

構文
  • オブジェクト.Delete [ Shift : = 定数 ] [ ]は省略可能

削除後にセルを移動させる方向を「Shift」引数で指定します。

Shift引数の定数内容
xlShiftToLeft左方向へシフトする
xlShiftUp上方向へシフトする

Shift引数を省略しても、エクセルが自動でシフト方向を判断して実行します。

サンプル1 Shift引数を設定しない
VBA
Sub Deleteサンプル4_1()
    Range("C5:C6").Delete
End Sub
vbadeletep008

セルC5とC6を削除します。

Shift引数省略した場合、このケースではエクセルが自動で「左方向にシフト」の判断をしました。

サンプル2 Shift引数を設定する
VBA
Sub Deleteサンプル4_2()
    Range("C5:C6").Delete shift:=xlShiftUp
End Sub
vbadeletep009

Shift引数を上方向に指定しました。

Shift方向に意味を持たせる場合はShift引数を指定するようにしましょう。

DeleteとClearの使い分けのまとめ

vbadeletepp013

結果として同じようにデータを消す、この2つのDeleteとClearメソッドですが、その消去方法は全く異なります。

選択を間違えれば、意図しない結果になることもあるでしょう。

Deleteメソッド、Clearメソッドを使用する場合は、先に処理対象のデータを別にコピーしておくことが必要かもしれません。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min