1. ホーム
  2. excel

すべてのExcelシートの末尾に名前付きシートを追加するには?

2023-10-15 22:26:22

質問

私は、"Temp" という名前の Excel シートを既存のすべてのシートの最後に追加しようとしていますが、このコードは動作しません。

Private Sub CreateSheet()
    Dim ws As Worksheet
    ws.Name = "Tempo"
    Set ws = Sheets.Add(After:=Sheets(Sheets.Count))
End Sub

理由を教えていただけませんか?

どのように解決するのですか?

これを試してみてください。

Private Sub CreateSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets.Add(After:= _
             ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Tempo"
End Sub

あるいは With 節を使って、繰り返しオブジェクトを呼び出さないようにすることもできます。

Private Sub CreateSheet()
    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = "Tempo"
    End With
End Sub

上記は、残りのコードで同じワークシート上で呼び出す必要がない場合は、さらに簡略化することができます。

Sub CreateSheet()
    With ThisWorkbook
        .Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
    End With
End Sub