シート操作まとめ ~追加・削除・移動・コピー・名前変更・色変更・非表示・保護の方法 等~

始めに

Excel VBAでシートを操作する方法をまとめて解説します。
シートの追加・削除・コピー・移動・名前の変更・見出しの色の変更・表示と非表示の切り替え・保護と解除など、VBAで頻繁に使う基本操作を網羅しています。
どの操作も実務でよく使われるので、マクロを組む際には必ず押さえておきたい知識です。

この記事では各シート操作の概要と簡単なサンプルコードを掲載し、さらに詳しい解説ページへのリンクも用意しています。
VBA初心者でも安心して学べる内容のため、シート操作の使い方を一通り学びたい方におすすめです。

シート名をつけるときのルールと注意点

シートの名前を付けるとき、ルールがあります。
詳細な情報については、次のリンクからご確認下さい。
・リンク:シート名をつけるときのルールと注意点

 下記のいずれかに当てはまるとシート名にできません

  1. シート名に使用できない文字が含まれている
    使用できない文字 → : ¥  / ? * [ ]
  2. ブックに同名のシート名が存在する
  3. シート名の長さが 1文字 ~ 31文字 でない
  4. シート名の先頭や末尾がアポストロフィ(')になっている

シートを追加する方法

Addメソッドを使用すると、新しいシートを追加できます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートを追加する方法

Add メソッドの構文

シートオブジェクト.Add(Before, After, Count, Type)

サンプルコード

Sub SampleSheetAdd()
    Dim ws As Worksheet
    ' アクティブなシートの左にシートを1枚追加する
    Worksheets.Add
    ' 追加するシートのオブジェクトを変数に格納する
    Set ws = Worksheets.Add
    ' "Sheet1" の1つ右(後ろ)に新しいシートを追加する
    Worksheets.Add After:=Worksheets("Sheet1")
    ' ブックの一番左(先頭)に新しいシートを追加する
    Worksheets.Add Before:=Worksheets(1)
    ' ブックの一番右(後ろ)に新しいシートを追加する
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    ' シートを2枚追加する
    Worksheets.Add Count:=2
End Sub

シートを削除する方法

Delete メソッドを使用すると、シートを削除できます。
シートの削除前と削除後に「Application.DisplayAlerts」から、警告の表示/非表示の設定を行いましょう。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートを削除する方法

Delete メソッドの構文

シートオブジェクト.Delete

サンプルコード

Sub SampleSheetDelete()
    Dim alerts As Boolean
    Dim i As Long
    Dim activeSheetName As String

    ' 警告の表示設定を取得する
    alerts = Application.DisplayAlerts
    ' 警告の表示をしない
    Application.DisplayAlerts = False
    ' "Sheet1" を削除する
    Worksheets("Sheet1").Delete
    ' "Sheet2" と "Sheet3" のシートを削除する
    Worksheets(Array("Sheet2", "Sheet3")).Delete
    ' 一番左(先頭)のシートを削除する
    Worksheets(1).Delete
    ' 最後尾(一番右)のシートを削除する
    Worksheets(Worksheets.Count).Delete
    ' アクティブなシート以外を削除する
    activeSheetName = ActiveSheet.Name
    For i = Worksheets.Count To 1 Step -1
        ' アクティブでないシートを削除する
        If Worksheets(i).Name <> activeSheetName Then
            Worksheets(i).Delete
        End If
    Next i
    ' 警告の表示設定を元に戻す
    Application.DisplayAlerts = alerts
End Sub

シートをコピーする方法

Copy メソッドを使用すると、シートをコピーできます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートをコピーする方法

Copy メソッドの構文

シートオブジェクト.Copy Before, After

サンプルコード

Sub SampleSheetCopy()
    Dim ws As Worksheet
    ' "Sheet2" の右隣りに "Sheet3" をコピーする
    Worksheets("Sheet3").Copy _
        After:=Worksheets("Sheet2")
    ' コピー先のシートオブジェクトを取得する
    Set ws = ActiveSheet
    ' 一番左(先頭)に "Sheet1" をコピーする
    Worksheets("Sheet1").Copy _
        Before:=Worksheets(1)
    ' 一番右(最後尾)に "Sheet1" をコピーする
    Worksheets("Sheet1").Copy _
        After:=Worksheets(Worksheets.Count)
    ' 新しいブックに "Sheet1" をコピーする
    ThisWorkbook.Worksheets("Sheet1").Copy
End Sub

シートを移動する方法

Move メソッドを使用すると、シートの移動ができます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートを移動する方法

Move メソッドの構文

シートオブジェクト.Move Before, After

サンプルコード

Sub SampleSheetMove()
    ' "Sheet1" を "Sheet3" の左隣りに移動する
    Worksheets("Sheet1").Move _
        before:=Worksheets("Sheet3")
    ' "Sheet1" を "Sheet3" の右隣りに移動する
    Worksheets("Sheet1").Move _
        after:=Worksheets("Sheet3")
    ' "Sheet3" を一番左(先頭)に移動する
    Worksheets("Sheet3").Move _
        before:=Worksheets(1)
    ' "Sheet2" を一番右(最後尾)に移動する
    Worksheets("Sheet2").Move _
        after:=Worksheets(Worksheets.Count)
End Sub

シート名を変更する方法

Name プロパティを使用すると、シート名の変更や取得ができます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シート名を変更する方法

サンプルコード

Sub SampleSheetNameChange()
    Dim nm As String
    ' "Sheet2" のシート名を "シート2" に変更する
    Worksheets("Sheet2").Name = "シート2"
    ' アクティブなシートのシート名を "TEST" に変更する
    ActiveSheet.Name = "TEST"
    ' 左から3番目のシート名を取得する
    nm = Worksheets(3).Name
    ' 先頭(一番左)のシート名を "売上表" に変更する
    Worksheets(1).Name = "売上表"
    ' 最後尾(一番右)のシート名を "設定" に変更する
    Worksheets(Worksheets.Count).Name = "設定"
End Sub

シートの見出しの色を変更する方法

Tab.Color プロパティを使用すると、シートの見出しの色を変更できます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートの見出しの色を変更する方法

サンプルコード

Sub SampleSheetTabColor()
    ' Sheet1 の見出しを赤にする
    Worksheets("Sheet1").Tab.Color = vbRed
    ' Sheet2 の見出しを緑色にする
    Worksheets("Sheet2").Tab.Color = vbGreen
    ' Sheet3 の見出しを紫にする
    Worksheets("Sheet3").Tab.Color = RGB(125, 125, 175)
End Sub

シートの表示と非表示を切り替える方法

Visible プロパティを使用すると、表示/非表示を切り替えられます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートの表示と非表示を切り替える方法

サンプルコード

Sub SampleSheetVisible()
    Dim vis As Long
    
    ' シート「Sheet2」の表示状態を取得する
    vis = Worksheets("Sheet2").Visible
    
    ' シート「Sheet2」を表示する
    Worksheets("Sheet2").Visible = xlSheetVisible
    
    ' シート「Sheet2」を非表示する(ユーザー操作で再表示可能)
    ' ※ Excelの画面やマクロやVBEから、再表示可能
    Worksheets("Sheet2").Visible = xlSheetHidden
    
    ' シート「Sheet2」を完全に非表示にする(ユーザー操作で再表示不可)
    ' ※ Excelの画面からは再表示できず、マクロやVBEから再表示可能
    Worksheets("Sheet2").Visible = xlSheetVeryHidden

    ' シート「Sheet2」の表示状態を元に戻す
    Worksheets("Sheet2").Visible = vis
End Sub

シートの保護と解除の方法

Protect メソッドを使用すると、シートの保護を設定できます。
詳細な使用方法は、次のリンクからご確認下さい。
・リンク:シートの保護と解除の方法まとめ

Protect メソッドの構文

シートオブジェクト.Protect Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables

サンプルコード

Sub SampleSheetProtect()
    ' シートの保護をかける(解除のパスワードなし)
    ActiveSheet.Protect
    ' シートの保護を解除する
    ActiveSheet.Unprotect
    ' パスワード「hoge」で、シートの保護をかける
    ActiveSheet.Protect "hoge"
    ' シートの保護をパスワード「hoge」で解除する
    ActiveSheet.Unprotect "hoge"
End Sub

ページの先頭へ