| 
    
     |  | こんにちは。かみちゃん です。 
 >>どこが問題なのかアドバイスお願いします。
 >
 >コード全体がないようですので、何ともいえませんが、
 >shtname = DateSerial(Year(txt), Month(txt) + 1, Day(txt))
 >のコードでもエラーになると思います。
 >まず、
 >変数 shtname の宣言がない
 >変数 txt のデータ型がString型である
 >そのため
 >txt = Sheets(Sheets.Count).Name
 >の内容によっては、「型が一致しません」のエラーになります。
 >
 >シートコピー前の末尾のシートのシート名は、どのようなものを設定しているのでしょうか?
 
 マクロマンさんがご紹介の例であれば、以下のような感じでもできます。
 ただし、コンテストに応募されるならば、
 Excelが勝手にString型からDate型に変換しているのを利用しているだけのため、
 正解なのかどうか、本当にそれでいいのだろうか?と疑問です。
 
 Dim txt As String
 
 txt = Sheets(Sheets.Count).Name
 With Worksheets.Add(after:=Worksheets(Worksheets.Count))
 .Name = Format(DateAdd("m", 1, DateValue(txt)), "yyyy""年""mm""月"";@")
 End With
 
 |  |