このページのマクロコードは、コピペで使えます。
ぜひお試しください!
シートコピーしてシート名変更(翌日の日付_パターン①)
以下のExcelVBAを実行すると、アクティブシートをコピーして翌日シートを作成します。
Sub 明日のシート追加()
Dim Ws As Worksheet
Dim Flg As Boolean
Dim GetDay As String
'アクティブシート名の翌日が何月何日か取得
GetDay = Format(DateValue(Year(Date) & "年" & ActiveSheet.Name) + 1, "m月d日")
Flg = False
'すでに同名シートがないかチェック
For Each Ws In Worksheets
If GetDay = Ws.Name Then
Flg = True
Exit For
End If
Next
'同名シートがなければ
If Flg = False Then
'シートを末尾にコピーして、シート名を変更する
ActiveSheet.Copy After:=ActiveSheet
ActiveSheet.Name = GetDay
MsgBox "完了"
Else
MsgBox "すでに翌日シートが存在しています。処理停止"
End If
End Sub
マクロ実行前
「5月1日」シートが存在しています。
マクロ実行後
シートをコピーして、シート名を翌日に変更します。
今回の場合、「5月1日」シートをコピーして「5月2日」シートを作成します。
下図のように「5月1日」シートを開いた状態でマクロを実行した場合、
すでに「5月2日」シートが存在するためエラーメッセージを表示します。
シートコピーしてシート名変更(翌日の日付_パターン②)
以下のExcelVBAを実行すると、雛形となるシートをコピーして翌日シートを作成します。
Sub 翌日シート追加()
Dim Ws As Worksheet
Dim Kihonsht As Worksheet
Dim Flg As Boolean
Dim GetDay As String
Set Kihonsht = Sheets("基本シート")
'1番右端のシート名が何月何日か取得してプラス1日
GetDay = Format(DateValue(Year(Date) & "年" & Sheets(Sheets.Count).Name) + 1, "m月d日")
Flg = False
'すでに同名シートがないかチェック
For Each Ws In Worksheets
If GetDay = Ws.Name Then
Flg = True
Exit For
End If
Next
'同名シートがなければ
If Flg = False Then
'1番右端にシートをコピーして、シート名を変更する
Kihonsht.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = GetDay
'マクロボタン削除
ActiveSheet.Shapes("Button 1").Delete
MsgBox "完了"
End If
End Sub
マクロ実行前
「基本シート」と「5月1日」シートが存在しています。
マクロボタンは「基本シート」にのみ設置します。
マクロ実行後
「基本シート」をコピーして、シート名を翌日に変更します。
マクロボタンをクリックするとき、1番右にある「5月1日」シートから日付を読み取り、
「5月1日」にプラス1日をした「5月2日」シートを作成します。
[ActiveSheet.Shapes(“Button 1”).Delete] で、コピーしたシートからマクロボタンを削除します。
マクロボタンの名称を取得(ここでは 「Button 1」)するには、
マクロボタンを選択状態にしてから「検索と選択」で、「オブジェクトの選択と表示」
マクロボタンの名称を取得できます。
シートコピーしてシート名変更(今日の日付)
以下のExcelVBAを実行すると、雛形となるシートをコピーして本日シートを作成します。
Sub 今日のシート追加()
Dim Ws As Worksheet
Dim Kihonsht As Worksheet
Dim Flg As Boolean
Dim GetDay As String
Set Kihonsht = Sheets("基本シート")
'本日の日付を取得
GetDay = Format(Date, "m月d日")
Flg = False
'すでに同名シートがないかチェック
For Each Ws In Worksheets
If GetDay = Ws.Name Then
Flg = True
Exit For
End If
Next
'同名シートがなければ
If Flg = False Then
'1番右端にシートをコピーして、シート名を変更する
Kihonsht.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = GetDay
'マクロボタン削除
ActiveSheet.Shapes("Button 1").Delete
MsgBox "完了"
End If
End Sub
マクロ実行前
「基本シート」と「5月1日」シートが存在しています。
マクロボタンは「基本シート」にのみ設置します。
マクロ実行後
「基本シート」をコピーして、シート名を今日の日付に変更します。
(今日の日付:2022/10/9)
すでに今日の日付のシートが存在する場合は、シートを作成しません。
シートコピーしてシート名変更(連番)
以下のExcelVBAを実行すると、雛形シートをコピーして連番シートを作成します。
Sub 連番シート追加()
Dim Kihonsht As Worksheet
Dim i As Long
Set Kihonsht = Sheets("基本シート")
Application.ScreenUpdating = False
For i = 1 To 10
'1番右端にシートをコピーして、シート名を変更する
Kihonsht.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = i
'マクロボタン削除
ActiveSheet.Shapes("Button 1").Delete
Next i
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
マクロ実行前
「基本シート」が存在しています。
マクロボタンは「基本シート」にのみ設置します。
マクロ実行後
「基本シート」をコピーして、連番で「1~10」シートを一括作成します。
シートコピーしてシート名変更(特定名称)
以下のExcelVBAを実行すると、雛形シートをコピーして特定の名前のシートを作成します。
Sub 指定名称のシート追加()
Dim Kihonsht As Worksheet
Dim i As Long
Dim A As Variant
'配列に値格納
A = Array("りんご", "めろん", "ばなな")
Set Kihonsht = Sheets("基本シート")
Application.ScreenUpdating = False
'配列ループ
For i = 0 To UBound(A)
'1番右端にシートをコピーして、シート名を変更する
Kihonsht.Copy After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = A(i)
'マクロボタン削除
ActiveSheet.Shapes("Button 1").Delete
Next i
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
マクロ実行前
「基本シート」が存在しています。
マクロボタンは「基本シート」にのみ設置します。
マクロ実行後
「基本シート」をコピーして、配列「A」で指定した名称のシートを作成します。
この記事がお役に立ちますと幸いです。
「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!