• ベストアンサー

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

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

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

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

Sub sample() Dim s As String Dim i As Integer s = InputBox("年月を入力してください(例:200806)") If s = "" Then Exit Sub For i = 1 To 31 Sheets(Trim(Str(i))).Name = s & Right("0" & Trim(Str(i)), 2) Next End Sub

sreds
質問者

お礼

ご回答いただきありがとうございます。思い通りに動きました!教えていただきありがとうございました。

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

InputBoxのサンプルをアップしておきます。 Dim defalttuki As String Dim tukiinput As String defalttuki = Format(Date, "yyyymm") tukiinput = Application.InputBox("年月指定", "年月を指定して下さい", defalttuki) If tukiinput = "False" Or tukiinput = "" Then Exit Sub MsgBox tukiinput

sreds
質問者

お礼

ご回答いただきありがとうございました。実際にやってみましたが、私の思っているように動きませんでした。今後の参考にさせていただきたいと思います。

  • chokiki
  • ベストアンサー率36% (9/25)
回答No.3

Sub test() Dim ws As Worksheet Dim i As Integer Dim buf, buf2 As String buf = InputBox("シート名の先頭に挿入する文字列を指定して下さい", "シート名入力") For Each ws In Worksheets buf2 = Format(ws.name, "00") ws.name = buf & buf2 Next End Sub (これは全シートを対象とした場合です。参考までに。)

sreds
質問者

お礼

ご回答いただきありがとうございます。指定の通りにやってみたところうまくできました。ただ、変更したくないシートもあったので、全シートの名前を変更する場合に使わせていただきます。またなにかあればご教示いただければと思いますのでよろしくお願いします。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

MsgBoxには入力することは出来ません。 InputBoxなどを使うことになると思います。 ループの仕方です。 Dim i As Integer For i = 1 to 31 msgBox i Next i 今月の日数を取得するサンプルです。 Dim tuitati As Date Dim nissuu As Integer tuitati = DateSerial(Year(Date), Month(Date), 1) nissuu = DateAdd("m", 1, tuitati) - tuitati MsgBox nissuu これは今月の日数ですが、応用しだいで指定月の日数を取得できます。 取得した日数分だけループしたら必要日数のシートのリネームが出来ます。 また、日付けの表氏形式は、Format関数でいけます。 シートのリネームは Worksheets("hoge").Name = "hogeratta" のようにします。 ただ、既存のシート名と重複する場合にはエラーになります。 前もって重複してないかチェックする必要があります。 InputBoxについては、VBAヘルプを参照してください。

sreds
質問者

お礼

丁寧なご回答ありがとうございます。 InputBoxの間違いですね。ただ今回のアドバイスは私のわずかなマクロスキルでは難しくてよくわかりませんでした。せっかく丁寧にご教授いただいたのに申し訳ありません。今後のマクロの勉強に役立たせていただきます。

関連するQ&A

専門家に質問してみよう