ワークシートの名前は Name プロパティを使用することで値の取得・設定が可能です。
Nameプロパティの使用方法
ワークシート名の取得例
前述の 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文字入力します。
正しくチェックされ、エラーが表示されました。
次はシート名での使用不可能文字のチェック機能を確認してみます。マクロを実行して表示された InputBox にアスタリスク(*)を入力します。
使用不可能文字が正しく検出され、エラーが表示されました。
次はシート名の重複チェック機能を確認してみます。マクロを実行して表示された InputBox に、既に存在しているシート名『CCC』を入力します。
シート名の重複が正しく検出され、エラーとなりました。
最後に、上記のエラーとならないシート名『DDD』を入力します。
新しくワークシートが追加されました。
シート名のエラー
シート名にエラーがある名前(文字数オーバー、使用不可能文字)を設定しようとすると、以下のエラーが表示され処理が中断します。シート名を新しく設定する場合には事前にチェックをしましょう。