最近の投稿

スポンサーリンク

ExcelVBA

コピペで使えるExcelVBAでシート追加、日付でリネーム

はじめに

ExcelVBAでひな形となるシートから翌月のシートを作成する処理は比較的多いのではないでしょうか。

多いけれど、月次でやる程度だしマクロ組むほどではなぁ……

そんな感じで月次で手動で対応している方も多いのではないと思います。

以下の処理をコピペして、ベースとなるシート名の部分を調整するだけで、翌月のシートを簡単に作れるマクロが使えます。

おまけでシートの重複チェックもつけておきましたので、Excelに同じ名前のシートが既にあると怒られる心配もありません。

コピペで使えるExcelVBA



Sub MakeNextMonthSheet()

    Dim rename As String
    
    '翌月(YYYYMM)を取得
    rename = Format(DateSerial(Year(Now), Month(Now) + 1, 1), "YYYYMM")
    
    '同名のシートが存在しないかチェックします
    If Not isSheetExist(rename) Then
    
        'ひな形というシートをベースに翌月(YYYYMM)のシートを作成します
        Sheets("ひな形").Select
        
        '最右にシートを追加します。
        Sheets("ひな形").Copy After:=Sheets(Sheets.Count)
        
        '最左にシートを追加する場合はこちら
        'Sheets("ひな形").Copy Before:=Sheets(1)
        
        'シートコピー後に名前を翌月に変更
        ActiveSheet.Name = rename
    
    Else
    
        '同名のシートが既に存在した場合の処理
        MsgBox "シート:" + rename + "は既に存在します"
    End If

End Sub


Function isSheetExist(sheetname As String)

    Dim ws As Worksheet
    
    Dim result As Boolean
    
    'すべてのシートに対して処理を実行
    For Each ws In Worksheets
    
        '引数で渡されたシート名と同じ名称のものが既に存在しないかチェック
        If ws.Name = sheetname Then
        
            result = True
            Exit For
        Else
            
            result = False
        End If
    Next ws
    
    isSheetExist = result
End Function

最近の投稿

スポンサーリンク

-ExcelVBA
-

© 2024 ONE HUMAN UNIT Powered by AFFINGER5