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

Windows8でExcel2000を使っています。
こういうマクロはどう書けばいいんでしょうか?

同一ファイル内で、シートを複数枚コピー。
複数選択したセルに入力された文字列を、上記でコピーされたシート名に反映したい。

「原本」というシート名のシートがあり、それを元に一年分の表を作りたいのですが
今は手で11枚コピーを作った後1枚ずつ名前変更でやっています。
シート名にしたい文字列は現在なら「2015年01月」~「2015年12月」です。
セルに「2015年01月」~「2015年12月」を入力、選択した後マクロ実行で
シート名変更に反映できればありがたいです。

A 回答 (1件)

ふつーに、必要な数だけシートのコピーと名前付けを繰り返すだけです。



sub macro1()
 dim h as range
 on error resume next

 for each h in selection
  worksheets("原本").copy after:=worksheets(worksheets.count)
  activesheet.name = h.value
 next
end sub



>入力、選択した後マクロ実行でシート名変更に反映

記入した内容が「シート名として適切ではない」場合(たとえば同じ名前のシートが既にある等を含む)の処置について考慮されていませんね。
必要に応じて自力で適切に工夫してみて下さい。
    • good
    • 0
この回答へのお礼

keithinさん、ありがとうございます。
書いていただいたマクロを登録しましたらコピーしてくれました。

自分でもやってみたのですが、複数選択したセルに入力された文字を
シート名にすることはいろいろ考えてみたいと思います。

Sheets("原本 (2)").Name = "2015年01月"
この部分の"2015年01月"などのところを絶対値で指定できれば、とか考えています。

Sub Macro1()
Sheets("原本").Select
Sheets("原本").Copy Before:=Sheets(1)
Sheets("原本").Select
Sheets("原本").Copy Before:=Sheets(1)
Selection.Copy
Sheets("原本 (2)").Select
Sheets("原本 (2)").Name = "2015年01月"
Range("C3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("原本 (3)").Select
Sheets("原本 (3)").Name = "2015年02月"
End Sub

お礼日時:2014/12/30 10:46

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