意図していなかったエラーが発生したので記事を書きます
マクロの内容
月毎に新しいSheetを作成する作業をマクロ化していました
新しいSheetのA1セルにFormat関数で日付を入力
Sheet名は2022年10月であれば"2022.10"としていました
ActiveSheet.Range("A1") = Format(Now, "yyyy.mm")
ActiveSheet.Name = ActiveSheet.Range("A1")
エラーの発覚
2022年10月に新しいSheetを作成するためマクロを実行した所、実行時エラーが発生しました
同じ名前のSheetがあるので作成できないという内容のエラーです
1.イミディエイトウインドウで変数の確認をした所"2022.10"で間違いありません
2.新しく作成したSheetのA1セルを確認すると"2022.1"でした
3.A1セルの書式設定を確認すると標準になっていました
4.原因はExcelが"2022.10"を小数点を含む数字と判断したので0が消えていたからだとわかりました
解決策
A1セルの書式設定を標準から文字列に変更することで解決しました
背景
"2022.1"のシートは手入力で名前を変更していました。マクロ実行すれば"2022.01"で作成され、今回のような実行時エラーにはならなかったはずです。Sheet名"2022.1"が作成される論理エラーとなり、問題の発覚が遅れた可能性があります
まとめ
今回のエラーの恐ろしい所は10月以外の月では発生しないことです
エラーを予防する方法として思いついたものを残しておきます
Sheet名をつける時は
1.2022年10月の様にExcelが文字列と判断できる名前をつける
2.特定のセルのValueを名前にする場合、セルの書式設定は文字列にする
3.マクロ作成時に変数を定義して、その変数をSheet名にする
Dim SheetName As String
SheetName = Format(Now, "yyyy.mm")
ActiveSheet.Name = SheetName