EXCEL、VBA

【VBA】重複しないシート名を取得する

 

重複しないシート名を取得する

同じブック内で重複しないシート名を取得する関数です。

指定したシート名の末尾に(1)、(2)、(3)、…とつけていき、重複しなかったシート名を取得します。
例:Sheet1 (2)、Sheet1 (3)

引数 SheetName:チェックするシート名

戻り値 重複しないシート名

備考 末尾の値は10までチェックします。尚、「For i = 2 To 10」で10の値を変更すれば、より多くのチェックができるようになります。

Public Function getUniqueName(ByVal SheetName As String) As String

    Dim newSheetName As String
        
    For i = 2 To 10
        
        Dim ws As Worksheet
        Dim flg As Boolean: flg = False
        
        'シート名を設定
        newSheetName = SheetName & " (" & i & ")"
        
        'そのシートがあるか探す
        For Each ws In Sheets
            If ws.Name = newSheetName Then
                flg = True
                Exit For
            End If
        Next
    
        If flg = False Then
            '設定したシート名が見つからなければリターン
            getUniqueName = newSheetName
            Exit Function
        End If
        
    Next

End Function

 

実行例

Debug.Print getUniqueName("Sheet1")
' Sheet1 (3)