ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【excel/VBA】シート名をつけるときの注意点

 最近ちょくちょくエクセルを触る時があるのですが、あまりに驚いた仕様を発見してしまったので備忘録として記事にしようと思った次第です。


 では、始めます。


1:同一のシート名は複数存在できない(大文字/小文字関係ない)
 見出しにある通りです。

 エクセルファイルを普通に使っていて同じシート名を複数作ろうとした時にエラーになるのは知っている人は多いかと思いますが、実は「アルファベットの大文字小文字関係なく判定」しています。

 例えば「Sheet1」というシートとは別に「SHEET1」というシートを作ろうとすると以下のようにエラーになります。
f:id:rikoubou:20220208171144p:plain

 もちろんアルファベットのみではなく、全角文字が含まれている場合でも同様にエラーになります。
f:id:rikoubou:20220208171559p:plain


2:シート名は31文字まで
 シート名には文字数制限があり、32文字以上になると31文字になるように自動的に切り捨てられます。
f:id:rikoubou:20220208171912p:plain

 ちなみにVBAで以下のようなマクロで32文字以上を設定しようとすると、エラーになります。

Option Explicit

Sub InsertLongSheetName()
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.ActiveSheet
    
    ws.Name = "1234567890123456789012345678901234567890" ' 40文字
'    ws.Name = "1"
    
    Set ws = Nothing
End Sub


f:id:rikoubou:20220208173206p:plain

 なので、VBAで自動的にシート名をつける場合は「アルファベットの大文字小文字」と「文字数」に気を付ける必要があります。


 以上がエクセルでシート名をつける時の注意点になります。


 VBAなどで自動的にシートを作成したりリネームしたりする時に、この仕様を知ってないと引っかかってしまう場合がある(実際に自分が引っかかって悩んでいた)ので気をつけましょう……。


・参考資料