Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6373 / 13646 ツリー ←次へ | 前へ→

【45573】新しいシートに年月を表示させる Toshi 07/1/3(水) 20:02 質問[未読]
【45574】Re:新しいシートに年月を表示させる マクロマン 07/1/3(水) 20:26 発言[未読]
【45575】Re:新しいシートに年月を表示させる かみちゃん 07/1/3(水) 20:32 発言[未読]
【45576】Re:新しいシートに年月を表示させる かみちゃん 07/1/3(水) 20:41 発言[未読]
【45577】Re:新しいシートに年月を表示させる Toshi 07/1/3(水) 20:46 お礼[未読]

【45573】新しいシートに年月を表示させる
質問  Toshi  - 07/1/3(水) 20:02 -

引用なし
パスワード
   シートを月単位で作成するとき、現在あるシート名に翌月のシートを作成するコードを書きました。最終行でインデックスが有効ではありませんとエラーが出ます。
どこが問題なのかアドバイスお願いします。

Dim txt As String
txt = Sheets(Sheets.Count).Name
'MsgBox DateValue(txt)
shtname = DateSerial(Year(txt), Month(txt) + 1, Day(txt))
With Worksheets.Add(after:=Worksheets(Worksheets.Count))
  .Name = Format(Worksheets(shtname). _
      Value, "yyyy""年""mm""月"";@")
End with

【45574】Re:新しいシートに年月を表示させる
発言  マクロマン  - 07/1/3(水) 20:26 -

引用なし
パスワード
   回答が付きにくいかも・・・。

h t t p://pc.nikkeibp.co.jp/pc21/contest/2007/macro/2.shtml

【45575】Re:新しいシートに年月を表示させる
発言  かみちゃん  - 07/1/3(水) 20:32 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>どこが問題なのかアドバイスお願いします。

コード全体がないようですので、何ともいえませんが、
shtname = DateSerial(Year(txt), Month(txt) + 1, Day(txt))
のコードでもエラーになると思います。
まず、
変数 shtname の宣言がない
変数 txt のデータ型がString型である
そのため
txt = Sheets(Sheets.Count).Name
の内容によっては、「型が一致しません」のエラーになります。

シートコピー前の末尾のシートのシート名は、どのようなものを設定しているのでしょうか?

その上で、本題ですが、

> .Name = Format(Worksheets(shtname). _
>      Value, "yyyy""年""mm""月"";@")

まだ、変数 shtname の名前のシートはできていないため、
また、WorksheetsオブジェクトにValueプロパティはないため、
.Name = Format(shtname, "yyyy""年""mm""月"";@")
でいいのではないでしょうか?

【45576】Re:新しいシートに年月を表示させる
発言  かみちゃん  - 07/1/3(水) 20:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>どこが問題なのかアドバイスお願いします。
>
>コード全体がないようですので、何ともいえませんが、
>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

【45577】Re:新しいシートに年月を表示させる
お礼  Toshi  - 07/1/3(水) 20:46 -

引用なし
パスワード
   ▼かみちゃん さん:
アドバイスありがとうございました。
お蔭様で出来ました。
ありがとうございました。

6373 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free