• ベストアンサー

VBA シート名を先月の名前にしたい

VBA シート名を先月の名前にしたい お世話になります。 excelのシート名を、当年先月の名前(2013年4月なら”2013年3月”)にしたいのです。 当月ならうまくいくのですが、VBAでいいコーディングがあればご教示ください。 宜しくお願いします。

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 当月ならうまくいくのですが 「どうやったか」は質問文中に書くべき =format(Now()-day(Now()),"yyyy年m月")

mattbianco2011
質問者

お礼

申し訳ありません ActiveSheet.Name = =format(Now()-day(Now()),"yyyy年m月") でうまくいきました。 感謝します。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

sub macro1() on error resume next activesheet.name = format(dateadd("M",-1,date), "yyyy年m月") end sub みたいな。

mattbianco2011
質問者

お礼

ありがとうございます。 うまくいきました。 感謝します。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

こんな感じでは如何でしょうか。 Sub ボタン1_Click() Dim DDATE As Date DDATE = DateSerial(Year(Date), Month(Date), 0) ActiveSheet.Name = Year(DDATE) & "年" & Month(DDATE) & "月" End Sub

mattbianco2011
質問者

お礼

ありがとうございます。 フォームでボタンを作り実行し確認しました。 感謝します。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 Sub Sheet名変更() Dim tmp As Variant tmp = DateAdd("m", -1, Date) ActiveSheet.Name = Year(tmp) & "年" & Month(tmp) & "月" End Sub こんな感じではどうでしょうか? ※ 当然のことながら同一Bookに同じシート名はつけることはできませんので、 1Sheetのみ限定となります。m(_ _)m

mattbianco2011
質問者

お礼

ありがとうございます。 うまくいきました。感謝します。

関連するQ&A

  • VBAコード”当月”のシートの選択

    いつもお世話になっております。 下記についてどうしてもうまい方法が思いつかないので、 どなたかご教示願います。 ・当月のシートを選択させたい ・詳細 エクセルBOOKでシート名が【2019年4月】【2019年5月】【2019年6月】があり、 今後も7月8月と増えていく →このシートの中の”当月”のものを選択させたい! ※月が新しくなる度に書き換えるてまを省きたい。 以上です。 どうぞご回答お願い致します。

  • エクセルVBAでシート名を変更する方法を教えて下さい。

    いつもお世話になっています。 エクセルである月ごとの表を作っています。 1シートひと月で、翌月はそのシートをコピーして新しいシートを作り、 使用しています。 VBAでシートをコピーすることはできたのですが、 その名前を翌月にする方法がわかりません。 シート名は単純に4月分なら「4」 5月分なら「5」です。 4月のシートをコピーすると、シート名が 「4(2)」となりますが、 これを自動で「5」とするにはどうしたら良いのでしょうか?

  • vba 西暦年表示の件

    お世話になります。 VBAで、西暦年表示を下2桁で表示させたく、 そして、月も含めて大文字に変換してエクセルシート のシート名としたいのです。 下記の様なイメージです。 月表示は一桁の月は一桁表示です。 シートは当月と次月分と二つ作りたいのですが、 ご教示頂きたく宜しくお願い致します。        記   ○○年○月

  • シートの名前の変更について(VBA)

    いつもお世話になっております。 VBAでシートの名前の変更を行おうと考えています。エクセルのシートで手動でシートの名前変更を入力すると使用できない文字は、入力が出来ないようになっています。VBAでテキストボックスへの入力を同じように規制する場合、Change()を使って1文字づつチェックするルーチェンを組むしかないのでしょうか? 取って置きの手法がありそうな気がしますが、思いつきません。どなたか?助けて頂けないでしょうか?よろしくお願いいたします。

  • vba ブック間でシート名のコピーをするには

    始めまして、よろしくお願いします。 excel vba 初心者のものです。 2つのブックがあり同時に開いている状態です。1つのブックはデータがあります。 もう1つは空のブックです。 データのあるブックのシートには、 シート1のシート名は「8月1日」 シート2のシート名は「8月2日」 シート3のシート名は「8月4日」 シート4のシート名は「8月5日」 シート5のシート名は「Sheet1」 やりたいこと データ、シート名があるブックから、 空ブックのシートにシート名をコピーしてきてセルに貼り付けたいです。 シートに名前を付けてるシート数は不規則なので「Sheet1」まで来たら終了したいです。 どうぞご教授の程よろしくお願い申し上げます。

  • VBAでのエクセルワークシート作成について

    お世話になります。 VBAで、オープンにしているエクセルファイルで、 シートを検索してシート「TEST」(仮名)が見つからなければ 「TEST」名で新規ワークシートを作成する。 尚且つ、「TEST2」のシート(一番後ろにあるシート)の前に 作成したいのです。 何卒、ご教示下さいます様、宜しくお願いします。

  • VBA シート操作

    エクセル2002使ってます。 VBAにて雛型のシートを27枚コピーし、集計用のシートに入力されている名簿の名前の通りにシート名を変更したいと思い、式を組みました。 しかし、雛型のコピーまではできましたが、シート名を上手く変更できません。 シート名を変更したいシートは雛型(2)~雛型(28)の名前で、ブックの一番左から並んでます。 これをシート名変更するにはどうすればいいでしょうか?

  • VBAでエクセルをシート名を気にせず読み込むには?

    ACCESS2000のVBAでエクセルを読んでいるプログラムを作成しています。 今までは、その受け取っているエクセルのシート名が固定だったのですが、次回からシート名が可変になります。そこで相談なのですが、シート名が可変でも読み込む方法はありますか。ちなみにシートは1つです。(インポート以外でお願いします。) 現在のコーディング例 一部抜粋 Dim wb As Workbook 'ワークブック Dim ws As Worksheet 'シート 'マスタのExcelファイルを開く Set wb = Workbooks.Open("test") Set ws = wb.Worksheets("SHEET1") <=ここが可変になります。 i = 0 Do Until IsEmpty(ws.Cells(StartRow + i, StoreNoCol)) nohindate = ws.Cells(StartRow + i, 2) '日 i = i + 1 Loop 宜しくお願いします。

  • エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同

    エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同じ名前の他のブックにそのシートを順々に挿入していきたいのですがどうすればよいのでしょうか。 宜しくお願い致します。

  • エクセルのVBAでシート名が重なるときの処理 

    お世話になります。 エクセルのVBAにてリストボックスで選択した単語をシート名に 反映させるマクロを作成しました。 が、一度シート名を作ると2回目に同じ単語を選択すると、 デバック?画面になってしまいます。 『同じ名前のシート名は作れません・・・』 希望としては、同じ名前が出たら自動に連番が割り振られる ようなものを希望しています。 マクロの記録で確認しても、やはり同じデバック要画面がでます。 別シートにシート名を反映させて、同じ名前がヒットしたら 文字列を追加して、そのシートに反映し続ける・・・ ようなことは考えられますが、どうも不細工で気が向きません。 もっとスマートな考えがあれば教えていただきたく よろしくお願いします。 参考に作ったVBAを下記します。 これだと、途中でシートを削除してしまうと デバック画面が発生してしまいます。 (マクロの切り抜きなので、  リストで選択したものが反映されるマクロではありません) Dim シート名 As String Dim n As Integer Sheets("伝票マスター").Select Worksheets("伝票マスター").Copy before:=Worksheets("伝票マスター") n = Sheets.Count Sheets("伝票マスター (2)").Select ActiveSheet.Name = "伝票" & n - 1 Range("D2") = n - 1 Range("D1").Select 、

専門家に質問してみよう