Excel VBAでシートを新しく作ったときに、自動で処理を実行する記録です。
シートが作成されたときに処理を実行するには「NewSheet」イベントを使います。
下図はExcel2016です。
< スポンサーリンク >
「NewSheet」イベント構文
Workbookオブジェクト.NewSheet(Sh)
新しいシートをブックに作成したときに発生します。
Sh=必須。新しいシートが渡されます。ワークシートまたはChartオブジェクトを指定できます。
サンプル1:シート作成時にメッセージを表示
シートを作成したときに「シートを挿入しました」とメッセージを表示してみます。
VBEを開き、「TshiWorkbook」をダブルクリックします。
左側のオブジェクトボックスで「Workbook」を選択し、右側のプロシージャボックスで「NewSheet」を選択します。
「Private Sub Workbook_Open()」の部分は不要なので消します。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox “シートを挿入しました”
End Sub
「新しいシート」をクリックしてみます。
「シートを挿入しました」というメッセージが表示されました。
サンプル2:シート作成時にシート名を変更
シートを作成したときに、新シートのシート名を今日の日付(yyyymmdd)にしてみます。
※既に今日の日付のシートがある場合は、「日付-2」「日付-3」と数字を追加するようにします。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
‘ワークシート用変数
Dim ws As Worksheet
‘シート名用変数
Dim str As String
‘今日の日付と同じシートが何件あるか数えるための変数
Dim i As Integer
‘今日の日付をyyyymmddの形にしstrに代入
str = Format(Date, “yyyymmdd”)
‘何件あるか用の変数に0を代入
i = 0
‘シートがある限り続けるループ
For Each ws In Worksheets
‘今日の日付から始まるシート名だった場合、i変数に1を足す
If ws.Name Like str & “*” Then
i = i + 1
End If
Next ws
‘今日の日付から始まるシート名が1件以上だったら、シート名を「-件数+1」の形にする
If i >= 1 Then
i = i + 1
str = str & “-” & i
End If
‘追加したシート名を変更する
Sh.Name = str
End Sub
こんな記事も書いています