4-3.シートの作成と削除・シート名

今回は、シートの作成・シートの削除及びシート名について説明します。

シートの作成

Addメソッド

○構文
Worksheets.Add Before:=/After:= , Count:=

○処理
新規ワークシートが追加されます。
Addメソッドは、追加されたWorksheetオブジェクトを戻り値として取得します。
Worksheetsコレクションに新しいWorksheetオブジェクトを追加する処理なので、オブジェクトにWorksheetsコレクションを指定しています。

○引数
Before/Afterに既存のシートを指定すると、指定したシートの前/後にシートを追加します。
BeforeかAfterはどちらかのみ指定でき、指定しない場合はアクティブシートの前にシートが追加されます。(エクセルのショートカットキー Shift + F11 と同じ挙動になります)

Countには整数を指定し、指定した数値分のシートを追加します。
指定しない場合は、シートが1つ追加されます。

Sub シートの追加()
    
    '新規シートの追加
    Worksheets.Add
    
    '一番最初(左)にシートを追加
    Worksheets.Add Before:=Worksheets(1)
    '一番最後(右)にシートを追加
    Worksheets.Add After:=Worksheets(Worksheets.Count)
    
    'シートを3枚追加
    Worksheets.Add Count:=3
    
End Sub

シートの削除

Deleteメソッド

○構文
Worksheet.Delete

○処理
指定したワークシートを削除します。
ただし、削除後にシートが1つもなくなる場合は、エラーとなります。

エクセルでは、シートを削除する際に警告文が表示されます。
この警告文はVBAで実行した場合も表示されますが、Application.DisplayAlertsにFalseを設定することで、表示させないようにできます。
ただし、Trueを設定し直さない場合は、Falseのまま警告文が表示されない設定が継続されるので、処理後にTruaを設定するようにしましょう。

Sub シートの削除()
    
    'シートの削除
    Worksheets(1).Delete
    
    '削除時の警告文を出さない設定
    Application.DisplayAlerts = False
    Worksheets(1).Delete
    Application.DisplayAlerts = True
    
    '複数シートを削除
    Worksheets(Array(1, 2)).Delete
    
End Sub

シート名

Nameプロパティ

○構文
<シート名の取得>
Worksheet.Name
<シート名の設定>
Worksheet.Name = “設定するシート名”

○処理
指定したワークシートのシート名を取得または設定します。

Sub シート名()

    'シート名の取得
    MsgBox Worksheets(1).Name
    
    'シート名の変更
    Worksheets(1).Name = "Sheet1"
    
    '新規シートを追加し名前を設定
    Worksheets.Add(Before:=Worksheets(1)).Name = "Sheet1"
    
End Sub

Indexプロパティ

Worksheetオブジェクトを取得する際は、シート名での指定と、インデックスでの指定があります。
シートのインデックスを取得する場合は、Indexプロパティを使用します。

○構文
Worksheet.Index

○処理
指定したワークシートのインデックス番号を取得します。

インデックスは、左から順に付けられるので、シートの順番が変わるとインデックスも変わります。

Sub シートのインデックス()
    
    MsgBox Worksheets("Sheet1").Index '>>> 1
    MsgBox Worksheets("Sheet2").Index '>>> 2
    
    'シートを移動した場合
    Worksheets("Sheet1").Move After:=Worksheets("Sheet2")
    MsgBox Worksheets("Sheet1").Index '>>>2
    MsgBox Worksheets("Sheet2").Index '>>>1
    
End Sub

コメント