こんてんつ
新しいシートの挿入方法について紹介する。名前が重複した場合に、何もしないか上書きするか、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の名前でシートを追加する。