関数・メソッド

新しいワークシートを作成時、処理を行う【NewSheet】【ExcelVBA】

構文

Workbook_NewSheet(ByVal Sh As Object)

Sh・・・ 追加された新規ワークシートオブジェクト
新規ワークシートを作成時に実行されるイベントです。

Workbook_NewSheetイベントのサンプルコード

標準モジュールではなく、Workbookモジュール(Microsoft_Excel_Objects_ThisWorkbook)に記載します。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    MsgBox "ワークシート名" & Sh.Name & "が追加されました"
End Sub

Workbook_NewSheetをよく使う形

業務日報を作成する際に、毎度新規シートを追加します。
その際に、当日日付のシート名に変更したい。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    '■既に当日ファイルを作成済みならシート削除(エラー回避)
    Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name = Format(Date, "yyyymmdd") Then
            Application.DisplayAlerts = False
            Sh.Delete
            Application.DisplayAlerts = True
            Exit Sub
        End If
    Next ws
    '■シート名を当日日付にリネームする
    Sh.Name = Format(Date, "yyyymmdd")
End Sub

発注書をエクセルで作成しています。毎度新規シートを追加します。
その際に、所定のフォーマットに揃えたい。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    '■コピー元のフォーマットシート(テンプレート)
    Dim ws As Worksheet
    Set ws = Worksheets("フォーマットシート")
    
    '■wsからSh(新規追加シート)に書式をコピペ
    ws.Cells.Copy
    Sh.Cells.PasteSpecial (xlPasteFormats)
End Sub

関連記事

形式を選択して貼り付ける【PasteSpecialメソッド】

コメント

タイトルとURLをコピーしました