1-2 ワークシートを制御するコマンド32件の使用例一覧表
ここではワークシートの制御関連のコマンドを集めて一覧表にしました。マクロ作成時にシート制御で忘れた
コマンドがあったらこの一覧表を活用して下さい。

【表3 シート制御関連一覧表】
No 項目 内容 例文 記事
1 追加 ワークシートの追加 Worksheets.Add  
2 追加 名前を付けてワークシートの追加 Sheets.Add.Name = "検索結果"  
3 追加 ワークシートをSheet2の前に追加 Worksheets.Add Before:=Worksheets("Sheet2")  
4 追加 ワークシートを一番前に追加 Worksheets.Add Before:=Worksheets(1)  
5 追加 ワークシートを末尾に追加 Worksheets.Add After:=Sheets(Sheets.Count)  
6 追加 ワークシートの枚数を指定し追加 Worksheets.Add Count:=3 本例は3枚
7 Activate シート名を指定しアクティブにする Worksheets("Sheet1").Activate  
8 Activate シート名を指定しアクティブにする Sheets("Sheet1").Activate 【注1】
9 Activate インデックス番号を指定しアクティブに Worksheets(1).Activate  
10 選択 ワークシートを選択 Worksheets("Sheet3").Select  
11 選択 アクティブシートの1つ前のシートを選択 ActiveSheet.Previous.Select  
12 選択 アクティブシートの1つ右のシートを選択 ActiveSheet.Next.Select  
13 名前 シート名を取得する MsgBox ActiveSheet.Name  
14 名前 シート名を取得する(インデックス番号) MsgBox ActiveSheet.Index  
15 名前 シート"Sheet1"の名前を"集計"にする Worksheets("Sheet1").Name = "集計"  
16 名前 ブック内の全シート名を取得する(For) For I = 1 To Worksheets.Count  ・・・・・・ [シート1]マクロ
17 名前 全シート名を取得する(For Each) For Each s_name In Worksheets ・・・・・・ [シート2]マクロ
18 再計算 シートの再計算の自動実行中止に設定 ActiveSheet.EnableCalculation = False  
19 再計算 ワークシートの再計算 Worksheets("Sheet1").Calculate  
20 保護 シートの保護(パスワード付き) ActiveSheet.Protect Password:="abc"  
21 保護 シートの保護(マクロでの書込みは可能) ActiveSheet.Protect UserInterfaceOnly:=True, Password:="abc"  
22 保護 シートの保護の解除(パスワード付き) ActiveSheet.Unprotect Password:="abc"  
23 非表示 シートを隠す Worksheets("Sheet4").Visible = False  
24 非表示 隠したシートをもどす Worksheets("Sheet4").Visible = True  
25 削除 現在アクティブなシートを削除する ActiveSheet.Delete  
26 削除 未使用ワークシートを削除する For Each 各シート In Worksheets ・・・・ [シート3]マクロ
27 削除 指定のシートがあるば削除する If sheet_name.Name = "Sheet99" Then ・・・・・ [シート4]マクロ
28 移動 Sheet1"を"Sheet2"の後ろに移動する Worksheets("Sheet1").Move After:=Worksheets("Sheet2")  
29 移動 現在アクティブなシートを"Sheet2"の前に移動する ActiveSheet.Move Before:=Worksheets("Sheet2")  
30 コピー Sheet1"を"Sheet2"の後ろにコピーする Worksheets("Sheet1").Copy After:=Worksheets("Sheet2")  
31 コピー Sheet2"を"Sheet1"の前にコピーする Worksheets("Sheet2").Copy Before:=Worksheets("Sheet1")  
32 取得 アクティブブックのワークシート数を取得する msgbox ActiveWorkbook.Worksheets.Count  

【注1】「Sheets」コレクションには、ブックにあるグラフ シート、ワークシートのすべてのシートが含まれます。
    したがって、ワークシートのみの指定は「Worksheets」が正式ですが、通常「Sheets」でも問題ありません。




(1)ワークシートシート制御関連の追加説明
表3の大部分の例は1行に納まり、例文もその1行をコピーペーストで使用でき簡単なので説明も省略します。
しかし、一部に多数行のプロシージャがありますが、そのプロシージャは表中で全文が見えないことと、
説明があった方が理解できると思うので以下に説明を追加します。


[1]ブック内の全シート名をFor文で取得する例
本例は「Worksheets.Count」「Worksheets(i).Name」を使用して、For文でブック内の全シート名を取得するマクロ例。
Sub シート1()
Dim i As Integer, mydat As String
    For i = 1 To Worksheets.Count
        mydat = mydat & " (" & i & ")" & Worksheets(i).Name
    Next
    MsgBox mydat
End Sub


[2]ブック内の全シート名をFor Each文で取得する例
本例はFor Each文で、Worksheetsコレクション内全オブジェクト(シート)を順次チェックしてシート名を取得例。
Sub シート2()
Dim i As Integer, mydat As String, s_name As Object
For Each s_name In Worksheets
    i = i + 1
    mydat = mydat & " (" & i & ")" & s_name.Name
Next
    MsgBox mydat
End Sub


[3]未使用ワークシートを削除する例
ブックを追加すると指定した枚数のシートも同時に作成されます。その作成されたシートを使用しないケースが
ありますが、マクロで多数のシートを処理する場合、未使用シートが邪魔になることがありますが、
本例は未使用ワークシートを削除する例です。
Sub シート3()
Dim s_name As Object
    For Each s_name In Worksheets
If s_name.UsedRange.Address(0, 0) = "A1" And s_name.Range("A1").Value = "" Then
            If Worksheets.Count <> 1 Then
                Application.DisplayAlerts = False
                    s_name.Delete
                Application.DisplayAlerts = True
            End If
        End If
    Next
End Sub
※全シート削除はエラーになるので最後の1枚は残す
 


[4]究極のシートデータ削除方法はそのシートを削除です
古いデータを削除してその同じシートへ新しいデータを記載したいケースはよくあります。文字と数式のみであ

れば「ClearContentsメソッド」で簡単に消去できますが、画像やグラフや罫線まで含めて消したい場合は別々の
消去となります。これを一括で1度に確実に消去する方法はシートを削除し、同じ名前のシートを追加すれば、
結果として過去データが全て消えたシートになります。
Sub シート4()
    For Each sheet_name In Worksheets
        If sheet_name.Name = "Sheet99" Then
            Application.DisplayAlerts = False
                Worksheets("Sheet99").Delete
            Application.DisplayAlerts = True
            Exit For
         End If
    Next
    Sheets.Add.Name = "Sheet99"
End Sub
※本例は、「Bookに特定シートが無いかチェックしない場合はそのシートを追加する」も同じ表題になります。
※削除確認メッセージを非表示に設定し、本例ではシート「Sheet99」が有る場合は削除しています。


【参考121】シートを非表示にする
下記「非表示1」「非表示2」マクロ実行でシートを非表示にできます。マニュアルで再表示は
【Excel2010】ホーム→(セル)書式→非表示/再表示→シートの再表示→再表示ダイアログのシート名
(本例:Sheet3)クリックで表示にできます。マクロ「非表示4」実行でも再表示できます。

なお、「非表示3」で非表示に設定した場合は上記マニュアル操作では再表示でないので、シートを
ユーザーから隠したいケースでは「非表示3」マクロ実行が有効です。それは「非表示4」マクロ実行で

Sub 非表示1()
    ActiveWindow.SelectedSheets.Visible = False
End Sub
-----------------------------------------------------------
Sub 非表示2()
    Worksheets("Sheet3").Visible = False
End Sub
----------------------------------------------------------
Sub 非表示3()
    Worksheets("Sheet3").Visible = xlVeryHidden
End Sub
--------------------------------------------------------
Sub 非表示4()
    Worksheets("Sheet3").Visible = True
End Sub


【参考122】シートを昇順に並べ替え
未使用の不要シートの削除例は紹介しましたが、シートの並べ替えは下記マクロできます。

Sub 参考並べ替え()
Dim dat() As String, datmAs As String
ReDim dat(Worksheets.Count)
For i = 1 To Worksheets.Count
   dat(i - 1) = Worksheets(i).Name
Next
    For i = 0 To Worksheets.Count - 1
        For j = Worksheets.Count - 1 To i Step -1
            If dat(i) > dat(j) Then
                datm = dat(i)
                dat(i) = dat(j)
                dat(j) = datm
            End If
        Next j
    Next i
Worksheets(dat(0)).Move before:=Worksheets(1)
For i = 2 To Worksheets.Count
    Worksheets(dat(i - 1)).Move after:=Worksheets(i - 1)
Next
End Sub


【参考123】追加したシートを最終へ移動(最初へ移動)
Sub 最終へ()
追加してシートを最終に移動
    Sheets.Add.Name = "新シート"
    Sheets("新シート").Move After:=Sheets(Worksheets.Count)
End Sub
----------------------------------------------------------------------
Sub 最初へ()
追加してシートを最終に移動
    Sheets.Add.Name = "新シート"
    Sheets("新シート").Move Before:=Sheets(1)
End Sub


【参考124】指定以外の全シートを処理
下記の例では、シート名「新シート」以外のシートを処理する例です。
Sub 全シート処理()
    For Each s_name In Worksheets
        namae = s_name.Name
        If namae <> "新シート" Then
            Sheets(namae).Select
            Range("A1").Value = "ABC"  'ここに実行するマクロを記入
        End If
    Next
End Sub



【戻る】    【Top画面】   【HPへ】