ワークシートの名前(Name プロパティ)

ワークシートの名前は Name プロパティを使用することで値の取得・設定が可能です。

スポンサーリンク

Nameプロパティの使用方法

構文
object.Name

※objectはワークシートオブジェクトを表す変数

ワークシート名の取得例

前述の Sheetsコレクション で扱ったサンプルマクロを再掲します。ブック内のすべてのシート名をイミディエイトウィンドウへ表示します。

Sub sample_eb071_01()
    '様々な種類のシートを扱うため汎用的なオブジェクト型で宣言
    Dim mySheet     As Object

    For Each mySheet In Sheets
        'シート名を取得して表示
        Debug.Print "シート名:" & mySheet.Name
    Next
End Sub

ワークシート名の設定例

こちらも前述ですが、ワークシートの追加で扱ったサンプルマクロを再掲します。ワークシートを追加するのと同時にシート名を変更します。

Sub sample_eb073_02()
    Dim mySheet     As Worksheet

    'シートを追加し、その追加したシートの参照を変数へ設定
    Set mySheet = _
        Worksheets.Add(After:=Worksheets(Worksheets.Count))

    With mySheet
        .Name = "DDD"   'シート名の設定

        'セルのフォント名とフォントサイズを変更
        With .Cells.Font
            .Name = "MS ゴシック"
            .Size = 9
        End With

        .Range("A1").Value = "テスト"
    End With
End Sub

ワークシート名取得・設定サンプル

以下のサンプルマクロは、上記 sample_eb073_02 のように単純にシートを追加するだけでなく、追加するワークシート名をInputBoxで受け付け、シート名のチェック(文字数、使用不可能文字の有無、重複)をしてからワークシートを追加します。

Sub sample_eb075_01()
    Dim strShtName      As String
    Dim mySheet         As Worksheet
    Dim flg_err         As Boolean
    Dim aryErrChar      As Variant
    Dim i               As Integer

    'シート名に使用できない文字の設定
    aryErrChar = Array(":", "\", "/", "?", "*", "[", "]")

    'シート名の入力受け付け
    strShtName = InputBox("追加するシート名を入力してください。")

    If strShtName = "" Then
        '「キャンセル」か「×」ボタンが押下された場合
        'またはシート名が未入力だった場合
        MsgBox "処理をキャンセルしました。", vbExclamation
        End     '処理終了
    End If

    'シート名の文字数チェック
    If Len(strShtName) > 31 Then
        MsgBox "シート名は31文字以内で入力してください。", vbCritical
        End     '処理終了
    End If

    'シート名に使用できない文字のチェック
    flg_err = False
    For i = 0 To UBound(aryErrChar)
        If InStr(1, strShtName, CStr(aryErrChar(i))) > 0 Then
            flg_err = True
            Exit For
        End If
    Next i

    If flg_err Then
        'シート名に使用不可能文字が含まれている場合
        MsgBox "シート名に使用不可能文字が含まれています。" & vbLf & _
               "【使用不可能文字】" & vbLf & _
               """" & Join(aryErrChar, """  """) & """", vbCritical
        End     '処理終了
    End If

    '入力されたシート名の存在チェック
    For Each mySheet In Worksheets
        '★ワークシート名の取得
        If mySheet.Name = strShtName Then
            flg_err = True  'シートがすでに存在している
            Exit For
        End If
    Next

    If flg_err Then
        'シートが存在している場合
        MsgBox "入力されたシート名『" & strShtName & _
               "』がすでに存在しています。", vbCritical
        End
    End If

    'シートの追加および名前の変更
    With Worksheets.Add(After:=Worksheets(Worksheets.Count))
        '★ワークシート名の設定
        .Name = strShtName
    End With

    MsgBox "シート『" & strShtName & _
           "』を追加しました。", vbInformation
End Sub

 ワークシートの追加 InputBox関数  MsgBox関数  InStr関数 
Array関数  LBound、UBound関数  Len、LenB関数 

以下の図はマクロ実行前の状態です。ワークシートが3枚存在しています。

サンプルマクロ実行前の状態
サンプルマクロ実行前の状態

マクロを実行すると InputBox が表示されます。まず最初は、キャンセルボタンを押してキャンセル機能を確認してみます。

[キャンセル]ボタンを押下した場合
[キャンセル]ボタンを押下した場合

ワークシート追加処理がキャンセルされました。InputBox右上の × ボタンを押しても同じ結果になります。

処理がキャンセルされたメッセージを表示
処理がキャンセルされたメッセージを表示

今度はシート名の文字数チェック機能を確認してみます。マクロを実行して表示された InputBox にシート名を32文字入力します。

シート名に32文字入力した場合
シート名に32文字入力した場合

正しくチェックされ、エラーが表示されました。

シート名は31文字以下のメッセージを表示
シート名は31文字以下のメッセージを表示

次はシート名での使用不可能文字のチェック機能を確認してみます。マクロを実行して表示された InputBox にアスタリスク(*)を入力します。

シート名で使用不可能な文字(アスタリスク)を入力した場合
シート名で使用不可能な文字(アスタリスク)を入力した場合

使用不可能文字が正しく検出され、エラーが表示されました。

使用不可能文字のメッセージを表示
使用不可能文字のメッセージを表示

次はシート名の重複チェック機能を確認してみます。マクロを実行して表示された InputBox に、既に存在しているシート名『CCC』を入力します。

既に存在しているシート名を入力した場合
既に存在しているシート名を入力した場合

シート名の重複が正しく検出され、エラーとなりました。

シート名が存在しているメッセージを表示
シート名が存在しているメッセージを表示

最後に、上記のエラーとならないシート名『DDD』を入力します。

シート名を正しく入力した場合
シート名を正しく入力した場合
シート名が追加されたメッセージを表示
シート名が追加されたメッセージを表示

新しくワークシートが追加されました。

マクロ実行後
マクロ実行後

シート名のエラー

シート名にエラーがある名前(文字数オーバー、使用不可能文字)を設定しようとすると、以下のエラーが表示され処理が中断します。シート名を新しく設定する場合には事前にチェックをしましょう。

シート名のエラー情報
シート名のエラー情報
タイトルとURLをコピーしました