プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。

下記のようなマクロを作成したいのですが、どなたかお教えいただけますでしょうか。

①Sheet AのA1~F27のデータをコピー
②新しいシートを右側に挿入
③新しいシート名をSheet AのH2セルと同じにする("2016年5月"など)
④コピーした内容を貼り付け

毎月右側に新しいシートが追加されていくようにしたいです。
作業は月1です。H2セルの日付は作業したときの月になります。
例)Sheet A / 2016年5月 / 2016年6月 ・・・

初心者過ぎる質問で申し訳ないのですがよろしくお願いいたします。

A 回答 (2件)

簡単ですが、こんなのでも動くと思います。


---------------------------------------------------------------------------------------
Sub Macro1()
Dim strSNM As String
strSNM = Worksheets("sheetA").Range("H2")

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = strSNM
Worksheets("sheetA").Range("A1:F27").Copy
Worksheets(strSNM).Range("A1").Select
ActiveSheet.Paste
End Sub
---------------------------------------------------------------------------------------
ただ気になるのは"sheetA"のセルH2に入力されている日付です。
実際に入力されている値は「2016/1/31」などとなっているのではないでしょうか?
シート名に「/(スラッシュ)」は使えないのでその場合は追加したシートに名前を付ける際エラーになってします。
    • good
    • 0
この回答へのお礼

ありがとうございました!
日付は文字列で入力にしたら問題なくシート名がつけられました。
とても助かりました。

お礼日時:2016/05/25 17:17

こんばんは!



すでに回答は出ていますが、「A」SheetのH2セルにはシリアル値が入っているという前提です。

Sub Sample1()
Dim wS As Worksheet
Worksheets.Add After:=Worksheets(Worksheets.Count)
Set wS = Worksheets(Worksheets.Count)
With Worksheets("A") '←「A」は実際のSheet名に!
wS.Name = Format(.Range("H2"), "yyyy年m月")
.Range("A1:F27").Copy wS.Range("A1")
End With
End Sub

※ 元データのSheet名が「A」というコードにしていますので、
実際のSheet名にしてください。

※ 月に1度だけ実行するコードです。
2度以上実行するとすでに存在するSheet名にすることはできませんのでエラーになります。
(日付までをSheet名にするのであれば1日1度は可能です)m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました!
ちゃんと動きました!とても助かりました。

お礼日時:2016/05/25 17:18

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A