Excel:VBAで外部データ接続保持しつつデータを削除する(ClearContentsを使わない)サンプルコード

Published on:
Last updated:

This post is also available in: 日本語 (Japanese)

ExcelVBAでClearやClearContentsメソッドを使ってデータを削除(Delete)すると、シートの外部データ接続までクリアされてしまいます。
以下のサンプルコードでは、ClearやClearContentsメソッドを使わずにヘッダー(項目名)以外のデータを削除(Delete)することで、シートの外部データ接続の状態を保持するようにしています。

サンプルコード中のシート名「シート01」は適当につけた名前ですので、適宜書き換えてお使いください。

Sub DataClearExceptHeader()
    '「シート01」のヘッダー以外のデータをDelete
    With Sheets("シート01")
        '1列目の列をカウント。2列目をカウントする場合には (Rows.Count, 2) とする。
        lRow = .Cells(Rows.Count, 1).End(xlUp).Row
	'行をカウント。
        lCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        'lRowでカウントしたデータが2行以上の場合に以下を実行します。
        If lRow >= 2 Then
	    'シート名「シート01」は例示のシート名です。
	    '以下のコードで「シート01」のCells(2, 1)からCells(lRow, lCol)までをDeleteしています。
	    'Cells(2, 1)とは、「シート01」の2行目1列目のセルを指しています。
            .Range(Sheets("シート01").Cells(2, 1), Sheets("シート01").Cells(lRow, lCol)).Delete
        End If
    End With
End Sub

About
Kuniyoshi Takemoto is the founder of Amelt.net LLC, and editor of this blog(www.amelt.net).Learn more and follow me on LinkedIn.