• ベストアンサー

マクロでシート名を日付に変更したい

アクティブなシートの名前が”0209”だとすると、マクロでその左のシート名を”0210”に変えたい。(1日後の日付にしたい) (参考)0209は2月9日の意味です。

  • gennya
  • お礼率90% (1050/1160)

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.1

Private Sub CommandButton1_Click() Dim dt1 As String Dim dt2 As String On Error GoTo Error dt1 = ActiveSheet.Name dt2 = Format(DateValue(Format(Date, "yyyy") & "/" & Left(dt1, 2) & "/" & Right(dt1, 2)) + 1, "mmdd") Sheets(ActiveSheet.Index + 1).Name = dt2 Error: End Sub アクティブなシートが「有効な日付ではない(13月とか、33日とか)場合」と「アクティブなシートが最後のシート(次のシートが存在しない)の場合」には、エラーを検知して「何もしない」ようになっています。 また「有効な日付かどうか?」は「今年」が基準になっています。つまり「0229」は「今年は無効」なので、エラーになります。うるう年が存在する年に実行すれば「0229」は有効と判断されます。 あと「日付の月と日を取り出す時」に「左から2桁」と「右から2桁」で取り出しているので、アクティブシートのシート名が「029」のように「4桁じゃない時」に「02」「29」と誤判断します(2桁とか5桁とか6桁とかも同様)

gennya
質問者

お礼

回答ありがとうございます。

その他の回答 (2)

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

Activeなシートのシート名タブ的に右隣のシートは、.Nextで ActiveSheet.Next.Name = "xxx1" のようにとらえられる。 あとは名付けたのちのシート名が、既存のシート名とダブらないように上記XXX1の部分を ”0209”から、”0210”に変えた文字列を作って設定すれしまい。 +1した日付(次の日、1日後)を作るのは 文字列の"0209”の前に年数字を加え、 例2018/02/09 これを関数で日付シリアル値に変換し、その日付シリアル値に +1し、日付の文字列化して、月日部分(4桁?)を取り出す、という面倒なことを、避けずに行えばしまい。 頭で考えて日付に+1してはならない。月末、年末、閏月末などで失敗しないように。エクセルの暦の精緻な仕組みを使うこと。 休日は避けるというなら、さらに一苦労してください。

gennya
質問者

お礼

回答ありがとうございます。

回答No.2

> その左のシート とのことなので、1行で。 Sub Macro()   Sheets(ActiveSheet.Index - 1).Name = Format(DateSerial(Year(Now()), Left(ActiveSheet.Name, 2), Right(ActiveSheet.Name, 2) + 1), "MMDD") End Sub エラー処理は一切考えていません。 どういう運用をするか?でエラー処理も変わるでしょうから。

gennya
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • エクセル2003 マクロ シート名

    エクセル2003です。 1つのブックにシートが10シート有ります。 R2のセルに日付を入れると それぞれのシート名が日付 (例)"11月25日"になるようなマクロを作りたいのですが、 教えてください。 又は逆にシート名に"11月25日"とすると R2セルが"11月25日"となるマクロを教えてください。 日付はシート毎に違います。 すみませんがよろしくおねがいします。

  • マクロ シート名変更

    マクロ シート名変更 Sheet1,Sheet2,Sheet3の名前を、 Sheet1のA1~A3に入力してある名前にしたいときどうすればいいでしょうか。 そして、 次に、A1~A3の入力を変えたときにSheet1,2,3の名前も 変わるにはどうやればいいんでしょうか。 お願いします...

  • セルに入っている日付を変更し、変更した日付でシートを作る

    セルA1に21年3月31日という日付が入っています。 このシートのセルA1に、20日後の、21年4月20日に変更し 新たにシートを作りたいです。これをマクロにしたいのです。 よろしくお願いします。

  • シート名変更のマクロ

    QNo.4400605『エクセルでシート数を指定して挿入するマクロはどうやって作ったらいいでしょうか。例えばA1セルに挿入したいシートの数を入力するとその数のシートが作成されるというようなマクロを作りたいのですが』という質問をしてそれについては解決しましたが、作成されたシートの名前を1~40のような数字に変更するマクロが分かりません。作成するシートの枚数は決まってなく、25シートであったり、40シートだったりします。A1:A40に1~40と変更後のシート名を入力して、それをシート名に反映させるマクロは作れたのですが、毎回シート枚数が変わるので「インデックスが有効範囲にありません」と出てしまいます。型としては、元シートがあり、そこでシート数を指定しシートを挿入し、そのできたシートに数字の名前をつけたいと考えています。長々なりましたが教えて下さい。

  • VBA、セルに入力された日付からシート名を変更

    あるセルに日付(例「2014/8/17」)と入力してあり、そのセルから日付を拾い、 日付が入力してあるシートではないシートのシート名を 日だけの名前(例「17日」)に変更したいのですが、どのように考えていいかわかりません。 よろしくお願いします。

  • 日付を読み込むマクロ

    エクセルの番地に読み込むのではなく、 マクロを使ってシートの名前に日付を読み込むようなマクロってありますか?

  • EXCELのシート名を一括変更するマクロ

    マクロの超初心者ですが、EXCELのシート名を一括変更するマクロを考えてます。 例えば、1つのBOOKで「1」~「31」までの名前が入っているシートを予め用意しておいて、マクロを実行するとメッセージボックスがでてきて、そこに200806と入力するとシート名の「1」が『20080601』に、「2」が『20080602』という感じで31日分自動でできるような方法はないでしょうか?いつも手入力でやっていて大変なので、なにか方法があれば教えて欲しいです。お願いします。

  • エクセルマクロ シート名の変更方法

    エクセル2000を使用しています。 シート名「1月」~「12月」の12枚のシートと、これらとは別の1枚のシート(仮に、シート名:sheet13とします)があります。 たとえば、sheet13のA1セルに「4」(開始月)を入力するとシート名「1月」~「12月」のシート名が「4月」~「3月」に変更されるマクロを組みたいのですが、皆目見当がつきません。シート名が重複するので一旦ぜんぜん違う名前に変更しておいて、その後正しいシート名をつける。という手順だとは思うのですが、具体的なソースが良くわかりません。アドバイスよろしくお願いします。

  • 変化するワークシート名にハイパーリンクで移動したい

    いつもお世話になります。 下に示す 左の月間シートのD6に月数を入れるとA4以下の日付が変わり、 右の日付シートのA1の日付も同時に変更されます。 それにともなって、ワークシートの名前が「**日」と月が変わるごとにシート名も 変わるようにしました。 しかし、左のシートのA列の「*月*日」の日付をクリックするとその日付に移動するように ハイパーリンクを設定していましたが、今の設定では、ワークシート名が変わるとリンクができなくなります。 もともと、毎月の締めの関係で、21日~月末~20日の順に左の月間ページのA列は並んでいる関係上、2月と3月の様にに日数が変わると途中で月末が来るので月初である1日以降の日付と日付シートが合わなくなるので、シート名を固定の連番(1~31)にし、左の月間シートの日付をクリックしてそのページに移動するようにしていました。しかし、ワークシート名が日付に合わせて、自動で何とか変えることが出来たので、日付とワークシート名が一致したのは良かったのですが、日付をクリックしてその日のシートに移動するという便利のいいことが出来なくなったという次第です。 ハイパーリンクを諦めるか、シート名を変えるのを諦めるのかどちらかしかないのでしょうか? 何か良い方法は無いものでしょうか? どうか、お知恵を拝借させて下さい。 よろしくお願いいたします。

  • excel マクロで特定シート名だけを変更させない

    今、ブックに"作業シート1"と"集計シート"があります。 "作業シート1"に貼り付けたデータから特定条件に合うものを集計シートへ抜き出し、作業日のシート名でグラフを作るマクロを作っています。 作っているマクロの中でシート名を指定していることが多いので、"作業シート1"と"集計シート"だけはシート名を保護したい(書き換えても元の名前にすぐ戻ったり、とか)のですが、どうすればいいでしょう? ブック全体の保護だと、シート追加は出来ないですよね

専門家に質問してみよう