LoginSignup
0
0

More than 1 year has passed since last update.

Excelの新しいSheetに名前をつけるマクロのエラー

Last updated at Posted at 2022-10-02

意図していなかったエラーが発生したので記事を書きます

マクロの内容

月毎に新しい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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0