• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel2007VBA 日付の加算について)

Excel2007VBA 日付の加算について

このQ&Aのポイント
  • Excel2007VBAを使用して、コピー元のシートの特定セルに入力されている日付に対して加算を行い、その加算した日付をシート名とコピー先のシートの特定セルに入力する方法について質問です。
  • 具体的には、コード「Worksheets(i + 1).Name = mydate」の部分でエラーが出てしまいます。ご教示いただけると幸いです。
  • このコードは週単位の報告書を作成するためのもので、コピー元のA3セルには表示上は9/16となっていますが、セルの書式設定上は3/14となっており、ロケールは日本語です。

質問者が選んだベストアンサー

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

シートタブにスラッシュ(/)は許容されませんので、別に文字列に変更して下さい。 例えば、m月d日とすると、Worksheets(i + 1).Name = Format(mydate, "m月d日")で変更できますが如何でしょうか。

dradra33
質問者

お礼

mu2011様 先日に引き続きご回答ありがとうございます。 Worksheets(i + 1).Name = mydateを Worksheets(i + 1).Name = Format(mydate, "m月d日")に 換えたらシート名、コピー先のセルの日付が加算できました。 ありがとうございます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

何処の行でエラーになったかぐらい質問に書くこと。 そうすればおおよそのエラーの事態はわかるはず。 シートの名前付けでエラーが出ているのでは。 また標題の「日付の加算について」でエラーではなかろう。標題がおかしい。 Sub test02() mydate = DateAdd("ww", 1, Worksheets(1).Range("A1")) MsgBox mydate End Sub などでどういう結果になるか分かるだろう。 Sub test02() mydate = DateAdd("ww", 1, Worksheets(1).Range("A1")) MsgBox mydate Sheets(4).Name = mydate End Sub をやると相応食え悪しくエラーメッセージが出る。だから判ると思うが、判らなければそういう主旨の質問をすること。 ーー 名前の受け方が禁止事項のようで Sub test03() i = 4 mydate = DateAdd("ww", 1, Worksheets(1).Range("A1")) mydates = Replace(mydate, "/", "") MsgBox mydates Sheets(4).Name = mydates End Sub で旨くいくだろう。 ーー (余談)日付数字だけでも文字列となり、OKのようだが、普通はシート名の前部分に報告20110919のように内容暗示文句を入れるのでは。 ーー 直ぐ自分の作ったコードを貼り付けて他人に頼むのではなく、自分で色々変えたりしてやってみて、焦点を絞ること。 それが勉強になる。

dradra33
質問者

お礼

imogasi様 いつもご回答ありがとうございます。 コードの記述及びプログラム作成時のコツについても 教えていただきありがとうございます。 今後のVBA学習の参考とさせていただきます。

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

変数iってそのブックが持つワークシートの数を一番最初に入れてますよね。 それに1をたしたらブックが持っているワークシートの数以上になってしまってエラーになってるんじゃないんですか? ワークシートを追加するコードをその前に入れておけば良いのでは?

dradra33
質問者

お礼

suzukikun様 ご回答ありがとうございます。 suzukikun様のアドバイスは、 今後VBAの学習の参考とさせていただきます。

関連するQ&A

専門家に質問してみよう