Worksheet.Nameプロパティ
ワークシートのシート名はWorksheetオブジェクトのNameプロパティで設定や取得を行います。
Nameプロパティを設定すると直後にブックのシートタブに反映されます。
グラフシート(Chartオブジェクト)やダイアログシート(DialogSheetオブジェクト)もNameプロパティで設定、変更を行いますが、一般的には利用されることはないため、以降は主にWorksheetオブジェクトにて説明します。
構文
Property Worksheet.Name As String
取得と設定のいずれもNameプロパティを利用します。
シート名設定時の制約
シート名を設定する際にはいくつかの決まりがあります。これはExcelの仕様です。
- 1文字以上、31文字以内であること。
- 全角半角に関わらず、コロン(:)、円記号(\)、スラッシュ(/)、疑問符(?)、アスタリスク(*)、左角括弧([)、右角括弧(])が設定できない。
- 同じブック内で同じシート名は設定できない。
これらに抵触した場合は以下のエラーが発生します。
シート名の取得と変更のサンプルコード
シート名の取得を行い、その後、設定を行うサンプルです。
1 2 3 4 5 6 7 8 9 |
Sub WorksheetNameTest() Dim sName '// シート名取得 sName = ActiveSheet.Name '// シート名設定 ActiveSheet.Name = "test2" End Sub |
設定するシート名が既に存在しているか確認する方法
上記の制約のとおり、同じブックに同じシート名を設定することは出来ません。
そこで同じシート名が存在するかを事前に確認したい場合があります。
以下の関数は引数のシート名が存在する場合はTrue、存在しない場合はFalseを返します。
7行目でSheetsコレクションを利用していますが、ほとんどの場合はWorksheetsコレクションでも構いません。
SheetsとWorksheetsの違いはSheetsは全ての種類をシートを管理していますが、Worksheetsはワークシートのみを管理しています。詳細は「VBAのSheetsとWorksheetsの違い」をご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
'// 引数 :チェック対象シート名 '// 戻り値:True=引数シート名が存在する、False=存在しない Function IsExistSheet(sName As String) As Boolean Dim sht '// 全シートループ For Each sht In Sheets '// 引数シート名を一致する場合 If sht.Name = sName Then IsExistSheet = False Exit Function End If Next IsExistSheet = True End Function |