IDA Life Blog

HOME  >  勉強
カテゴリー : 勉強 - プログラミング
•VBA •Excel •マクロ •サンプルコード •シートを削除する •作業効率化

公開日: 2023-12-20
最終更新日: 2023-12-20

不要なシートを一括削除するVBAサンプルコード【Excel】


2023年12月

Excelを使って資料を作るとき、データ集計のために一時的に作成したが そのあとには一切使うことがないシート(不要なシート)が、しばしば作り出されます。そういうシートは、そのままにしておくとシートの数がどんどん増えていって、本当に必要なデータを圧迫してしまいます。したがって、不要なシートをこまめに削除することが、資料作成の作業効率向上において、有用です。

そこで、この記事では下図のような複数のシートを考えます。

image 1

[ 画像1. 5つのシート ]

 

ここにはシートが5つあります。シートの名前は以下のとおりです。

ここでは、「データ1」、「データ2」、「データ3」というシートを、不要なシートであるとします。したがって、やりたい事は、不要なシートである「データ1」~「データ3」だけを削除することです。

以下は、サンプルコードです。

Public Sub deleteDataSheets()

    Dim sheetNames() As String
    indexNum = -1 '配列の添え字
    '全てのシート名を配列に格納する。
    For i = 1 To ThisWorkbook.Sheets.Count
        indexNum = indexNum + 1
        ReDim Preserve sheetNames(indexNum)
        sheetNames(indexNum) = ThisWorkbook.Sheets(i).Name
    Next i

    '全てのシート名に対して処理を実行する。
    For i = 0 To UBound(sheetNames)
        sName = CStr(sheetNames(i))
        If (sName <> "Sheet1") And (sName <> "Sheet2") Then
            Application.DisplayAlerts = False '確認ダイアログ無効。
            ThisWorkbook.Sheets(sName).Delete
            Application.DisplayAlerts = True  '確認ダイアログ有効。
        End If
    Next i
End Sub

このコードを実行すると、「データ1」~「データ3」が削除されます。「Sheet1」と「Sheet2」は削除されず、残ります。

image 2

[ 画像2. コードを実行した結果 ]

 

今回の感想:
VBAで、不要なシートを削除するためのコードを書きました。
シート削除のような単純な作業は、人の手で行うことも可能です。また、シートが少ないときは人の手でおこなったほうが、コードで実行するよりも むしろ効率がいいと思われます。しかし、シートが多くなってきたとき、このような単純作業をVBAやマクロで自動化しておくと、便利です。すなわち、VBAで単純作業のプロシージャ(関数)を書けるようにしておくことは、仕事に役立つことだと思います。