dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

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
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/03 15:07

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
    • good
    • 1
この回答へのお礼

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

お礼日時:2008/06/03 15:18

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

(これは全シートを対象とした場合です。参考までに。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/03 15:22

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ヘルプを参照してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/03 15:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!