【ExcelVBA】ワークシートの追加

ExcelVBA, シートの操作

基本編

ワークシート追加

Sub sample()

	ThisWorkbook.Worksheets.Add

End Sub


名前を付けたワークシート追加

Sub Sample()

	ThisWorkbook.Worksheets.Add.Name = "在庫"

End Sub


ワークシート追加してから名前を付ける

パターン1
Sub Sample()

	ThisWorkbook.Worksheets.Add

	ThisWorkbook.ActiveSheet.Name = "在庫"

End Sub

パターン2
Sub Sample()

	Dim NewWS As Worksheet

	Set NewWS = ThisWorkbook.Worksheets.Add()

	NewWS.Name = "在庫"

End Sub


先頭に名前を付けたワークシート追加

Sub Sample()

	ThisWorkbook.Worksheets.Add(Before:=Worksheets(1)).Name = "在庫"

End Sub


末尾に名前を付けたワークシート追加

Sub Sample()

	ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "在庫"

End Sub


先頭にワークシート追加してから名前を付ける

パターン1
Sub Sample()

	ThisWorkbook.Worksheets.Add before:=Worksheets(1)

	ThisWorkbook.ActiveSheet.Name = "在庫"

End Sub

パターン2 ※Addの後ろは()でくくります。
Sub Sample()

	Dim NewWS As Worksheet
 
	Set NewWS = ThisWorkbook.Worksheets.Add(before:=Worksheets(1))
 
	NewWS.Name = "在庫"

End Sub


末尾にワークシート追加してから名前を付ける

パターン1
Sub Sample()

	ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
	
	ThisWorkbook.ActiveSheet.Name = "在庫"

End Sub

パターン2 ※Addの後ろは()でくくります。
Sub Sample()

	Dim NewWS As Worksheet
 
	Set NewWS = ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count))
 
	NewWS.Name = "在庫"

End Sub


先頭に3枚のワークシート追加

Sub Sample()

	ThisWorkbook.Worksheets.Add before:=Worksheets(1), Count:=3

End Sub


末尾に3枚のワークシート追加

Sub Sample()

	ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=3

End Sub


グラフシート追加

Sub Sample()

    ThisWorkbook.Charts.Add

End Sub
Charts の箇所を Worksheets に置き換えればワークシート追加になります。

応用編

自ブックでワークシートが存在しないときに追加

Sub Sample()
      
  Dim TargetWS As String
  Dim TargetChk As Variant
  
  TargetWS = "Sheet8"     '追加したいワークシート名明記
   
  On Error Resume Next ' エラー発生時の継続処理有効化
  Set TargetChk = Nothing
  Set TargetChk = ThisWorkbook.Worksheets(TargetWS)
  On Error GoTo 0      ' エラー発生時の継続処理無効化
           
  If TargetChk Is Nothing Then
    'ワークシートがない
    ThisWorkbook.Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = TargetWS
  Else
    'ワークシートがある
    MsgBox "安心してください。" & TargetWS & " は、ありますよ!"
  End If
  
  Set TargetChk = Nothing
  
End Sub
※6行目のワークシート名を書き換えてください。

他ブックでワークシートが存在しないときに追加

Sub Sample()
      
  Dim TargetWB As String
  Dim TargetWS As String
  Dim TargetChk As Variant
  
  TargetWB = "TEST.xlsx"  '対象ブック名明記
  TargetWS = "Sheet8"     '追加したいワークシート名明記
      
  On Error Resume Next ' エラー発生時の継続処理有効化
   
  Set TargetChk = Nothing
  Set TargetChk = Workbooks(TargetWB)
      
  On Error GoTo 0      ' エラー発生時の継続処理無効化
      
  If TargetChk Is Nothing Then
        MsgBox TargetWB & " は開いてる?"
        Exit Sub
  End If
   
  On Error Resume Next ' エラー発生時の継続処理有効化
    
  Set TargetChk = Nothing
  Set TargetChk = Workbooks(TargetWB).Worksheets(TargetWS)
 
  On Error GoTo 0      ' エラー発生時の継続処理無効化
           
  If TargetChk Is Nothing Then
    'ワークシートがない
    Workbooks(TargetWB).Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = TargetWS
  Else
    'ワークシートがある
    MsgBox "安心してください。" & TargetWB & " に " & TargetWS & " は、ありましたよ!"
  End If
  
  Set TargetChk = Nothing
  
End Sub
※7行目のブック名を書き換えてください。
※8行目のワークシート名を書き換えてください。
※17行目でブックが開いていることを確認しています。開いていないときは処理を中止させています。