こんてんつ
新しいシートの挿入方法について紹介する。名前が重複した場合に、何もしないか上書きするか、2択で選べるようにした。
- 単にシートを追加する
- 指定の名前のシートが存在しなかったら追加する
- 指定の名前のシートが存在したら上書きする
単にシートを追加する
コード
Sub Macro1() Dim newSheet As Worksheet Set newSheet = Worksheets.Add(After:=Sheets(Worksheets.Count)) newSheet.Name = "test" End Sub
出力
解説
Worksheets.Add(After:=Sheets(Worksheets.Count))
は一番後ろ(末尾、最後)にSheetを追加の意味。
指定の名前のシートが存在しなかったら追加する
コード
Sub Macro2() createSheet ("test") End Sub '以下自作のcreateSheet関数 Function createSheet(argNewSheetName As String) Dim ws As Worksheet Dim existFlg As Boolean existFlg = False For Each ws In ThisWorkbook.Worksheets If ws.Name = argNewSheetName Then existFlg = True Exit For End If Next If existFlg = False Then Dim newSheet As Worksheet Set newSheet = Worksheets.Add(After:=Sheets(Worksheets.Count)) newSheet.Name = argNewSheetName End If End Function
解説
existFlg
にて、シートが存在するか否かを調べる。その後False
の場合argNewSheetName
の名前でシートを追加する。
指定の名前のシートが存在したら上書きする
コード
Sub Macro3() createSheetOverwrite ("test") End Sub '以下自作のcreateSheetOverwrite関数 Function createSheetOverwrite(argNewSheetName As String) Dim ws As Worksheet Dim existFlg As Boolean existFlg = False For Each ws In ThisWorkbook.Worksheets If ws.Name = argNewSheetName Then existFlg = True Exit For End If Next If existFlg = True Then Application.DisplayAlerts = False Sheets(argNewSheetName).Delete End If Dim newSheet As Worksheet Set newSheet = Worksheets.Add(After:=Sheets(Worksheets.Count)) newSheet.Name = argNewSheetName End Function
解説
existFlg
にて、シートが存在するか否かを調べる。その後True
の場合そのシートを一回Delete
する。その後ろは、True
or False
に関わらず、argNewSheetName
の名前でシートを追加する。