シート操作まとめ ~追加・削除・移動・コピー・名前変更・色変更・非表示・保護の方法 等~
始めに
Excel VBAでシートを操作する方法をまとめて解説します。
シートの追加・削除・コピー・移動・名前の変更・見出しの色の変更・表示と非表示の切り替え・保護と解除など、VBAで頻繁に使う基本操作を網羅しています。
どの操作も実務でよく使われるので、マクロを組む際には必ず押さえておきたい知識です。
この記事では各シート操作の概要と簡単なサンプルコードを掲載し、さらに詳しい解説ページへのリンクも用意しています。
VBA初心者でも安心して学べる内容のため、シート操作の使い方を一通り学びたい方におすすめです。
シート名をつけるときのルールと注意点
シートの名前を付けるとき、ルールがあります。
詳細な情報については、次のリンクからご確認下さい。
・リンク:シート名をつけるときのルールと注意点
下記のいずれかに当てはまるとシート名にできません
- シート名に使用できない文字が含まれている
使用できない文字 → : ¥ / ? * [ ] - ブックに同名のシート名が存在する
- シート名の長さが 1文字 ~ 31文字 でない
- シート名の先頭や末尾がアポストロフィ(')になっている
シートを追加する方法
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