• ベストアンサー

sheetを追加する

宜しくお願いいたします Excel2010を使用しています 家計簿を作成しています、1月分は関数等入れて完成しました 1~12月までシートにコピーしましたが、毎年これを使うとなると この作業が面倒で、マクロでどうにかならないか試してみましたが 上手くいきません、 何か、マクロを使い1月のシートを12月までシート名を変えながら 張り付けるマクロは有るでしょうか(シート名が1月・・・・・12月まで関数等含むシートが出来る)

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

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

こんにちは! Sheet1(1月)は関数が入っていて、手入力データはないとします。 Alt+F11キー → 「This Workbook」をダブルクリック → ↓のコードをコピー&ペーストして マクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sheet追加() Dim i, j, k As Long Do Until Worksheets.Count = 12 Worksheets.Add after:=Worksheets(Worksheets.Count) Loop For k = 2 To 12 i = Worksheets(1).UsedRange.Rows.Count j = Worksheets(1).UsedRange.Columns.Count Range(Worksheets(1).Cells(1, 1), Worksheets(1).Cells(i, j)).Copy _ Destination:=Worksheets(k).Cells(1, 1) Worksheets(k).Name = k & "月" Next k End Sub こんな感じではどうでしょうか?m(_ _)m

ok136
質問者

お礼

有難うございました お陰様で完璧に出来ました、結構色々とやってみましたが 上手くいかずに質問しました お陰様で勉強になりました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

いま一番左にあるシートタブが、1月とする。 Sub test01() For i = 12 To 2 Step -1 'MsgBox Trim(Str(i)) & "月" MsgBox StrConv(i, vbWide) & "月" Worksheets("1月").Copy after:=Worksheets("1月") 'ActiveSheet.Name = Trim(Str(i)) & "月" ActiveSheet.Name = StrConv(i, vbWide) & "月" Next i End Sub これの実行で、2月ー12月にシートがコピーされる。 しかし情況やニーズにより、これが質問者に十分ということは無いだろう。 しかしVBA初心者がこれより先VBAや関数で月ごと家計簿シートを作るのは簡単ではないとおもう。 またVBAは簡単ではない。 ーー とりあえず、原シートのどこか1セルに月数字を入れて、その各シートの月数字でシートのセルの式(月中日付ほか)などコントロールすることを考えては。 すなわちそれ向けの関数式などを始から工夫しておかなければならないだろう。 ーーー >毎年これを使うとなるとこの作業が面倒で こんなこと(年1回11シート作成)、を面倒というなら、こんなところへ質問して回答を待つほうが面倒だと思う。 またそれを回答者に丸投げして、回答者に手数を掛けさせるのもどうかということになる。

ok136
質問者

お礼

勉強のつもりで質問しました いやなら回答しないでください。