
No.1ベストアンサー
- 回答日時:
こんなんでどうですか。
---
Sub test()
Dim i As Integer
'最後のシートをコピーしその後ろに追加
Sheets(Sheets.Count).Copy After:=Sheets(Sheets.Count)
'名前を変更
i = Left(Sheets(Sheets.Count - 1).Name, Len(Sheets(Sheets.Count - 1).Name) - 1)
Sheets(Sheets.Count).Name = IIf(i + 1 > 12, 1, i + 1) & "月"
End Sub
ご回答ありがとうございます。変数の宣言をして「最後のシートをその後ろに追加という」発想が自分には思いつきませんでした。確かに、自分の用途としては、最後を増やすこと意外ありません。それから12月から1月の切り替えですが、IIf(i + 1 > 12, 1, i + 1) & "月"とても参考になりました。自分には非常に役に立ちます。ありがとうございます。
No.4
- 回答日時:
ここへ質問する前に、操作をしてマクロの記録をなぜ採らないのか。
そして次の月にはどこをどう変えればよいか、を考えることだ。
Sub Macro3()
Sheets("Sheet1").Select
Sheets.Add
Sheets("Sheet4").Select
Sheets("Sheet4").Name = "5"
End Sub
(1)この場合に前の月のシート(名)はどういう風に捕まえるか問題
こんなことも、質問で「次月」と済ましてしまうようでは、プログラムは進まない。
今月シートとは何かから考えないと。
必ず今月シートを開いて、完成したVBAを実行するなら、ActiveSheetなどの捉え方を使えるが、不便では?。
シート名をそもそどうするかを考えないと(質問に明記して質問しないと)。
(2)次の月をどうして決めるか。、特に12月の次は1月にしなければならないが、どう計算などするか。
日付シリアル値に持ち込んで、月部分に+1するのが確実なように思う。
月数字以外と、月数字部分を分ける
シート名から年、月、1の日を作り、そこから関数で年、月+1,1の日を作り、年、月の部分を文字列化して、月数字以外部分を加えるなど、どうかな。
人間にシート挿入のシート名を毎度答えさせる手もあり、結構安定性があるようにもおもうが。
(3)3月の内容をコピーして貼り付けしたいのです
これもマクロの記録でコードがわかる。次の月になると、データ数の増減などで、コピーするセル範囲は変わるのかな(フォーと尾が決った表で固定なのか?)。
ご回答ありがとうございます。まず、ごもっともなご指摘ありまがとうございます。素人ゆえに、将来恥ずかしい質問もすることもあると思います。自分なりに検索したり、記録などで読み取ろうともしましたが、解決には至らず、質問しました。わからないから質問するという人もいることをご理解ください。内容に至っては、12月と1月の件などその考え方の基礎を理解できました。その難しさもわかりました。やって覚えるというよりは、基本の考え方を地道に蓄積していくしかないということも理解できました。マクロについては、ご回答のように「5」のシートができました。ありがとうございます。
No.3
- 回答日時:
No.2です!
たびたびごめんなさい。
12月の場合を考慮していませんでした。
↓のコードに訂正してください。
Sub test()
Dim i As Long
i = WorksheetFunction.Substitute(ActiveSheet.Name, "月", "") * 1
ActiveSheet.Cells.Select
Selection.Copy
Worksheets.Add after:=ActiveSheet
ActiveSheet.Paste
If i = 12 Then
ActiveSheet.Name = "1月"
Else
ActiveSheet.Name = i + 1 & "月"
End If
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
End Sub
何度も失礼しました。m(__)m
ご回答ありがとうございます。また、訂正版もありがとうございます。
実際に自分もやってみましたが、13月になりました。しかし、そういうことも大事なことですから
実際に、この改訂版との違いで、すごく役にたちました。もしも改訂版が最初に投稿されていたら自分はそのことに、気付かずにいた気がシマス。参考になりました。改訂版できました。12月の次は1月になるという定義など、少しづつわかってきました。ありがとうございます。
No.2
- 回答日時:
こんにちは!
一例です。
同一ブック内で同じSheet名を付けることはできませんので、
今操作中のSheet名の月の翌月sheet名はないということが大前提です。
Sub test()
Dim i As Long
i = WorksheetFunction.Substitute(ActiveSheet.Name, "月", "") * 1
ActiveSheet.Cells.Select
Selection.Copy
Worksheets.Add after:=Worksheets(Worksheets.Count)
ActiveSheet.Paste
ActiveSheet.Name = i + 1 & "月"
Application.CutCopyMode = False
ActiveSheet.Range("A1").Select
End Sub
こんな感じではどうでしょうか?m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA ふたつの同じ様式シートのセルをコピーしたい 2 2023/03/08 15:28
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) 【VBA】指定した検索条件に一致したら別シートに転記したい 2 2022/03/23 16:14
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Excel(エクセル) エクセルで最下行にデータを追加するVBA 6 2023/05/09 09:30
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA シート名を先月の名前にしたい
Excel(エクセル)
-
Excelでシートに年月を自動で変更するやり方
Excel(エクセル)
-
月が変わったら自動でシートが複製される方法を教えてください。
Visual Basic(VBA)
-
-
4
エクセル:VBAで月変わりで、自動でシートを選択したい
Excel(エクセル)
-
5
Excelvbaでブックをコピー名前翌月に変更
Excel(エクセル)
-
6
前月の統計表の計算式を残したまま今月のシートに一括コピーする方法ありますか?
Excel(エクセル)
-
7
【Excel マクロ】 同一book内で、翌日のシート作成
Excel(エクセル)
-
8
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
9
前月分を次月シートに繰越できるマクロについて
Excel(エクセル)
-
10
エクセルのシートコピーした際に数式を月移動したい(?)
Excel(エクセル)
-
11
VBAでセルに入っている日付をシート名にする
Excel(エクセル)
-
12
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
13
VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。
Visual Basic(VBA)
-
14
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
15
エクセルで、数値を月として認識させるには
Excel(エクセル)
-
16
エクセルのシート名変更で重複した時のvbaの処理
Visual Basic(VBA)
-
17
エクセルで、月によって参照するシートを自動的に変える関数
Excel(エクセル)
-
18
Excelで金銭出納帳。繰越残高を翌月へ・・・
その他(パソコン・スマホ・電化製品)
-
19
エクセルでマクロを作成してますが、バックスラッシュが入力出来ません。 設定方法等教えて頂けないでしょ
Excel(エクセル)
-
20
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
前の(左隣の)シートを連続参...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
エクセル 計算式も入っていない...
-
特定のセルだけ結果がおかしい...
-
Excelで金銭出納帳。繰越残高を...
-
VBAでシートコピー後、シート名...
-
エクセルで「ウィンドウを元の...
-
Excel、同じフォルダ内のExcel...
-
EXCEL:同じセルへどんどん足し...
-
特定のシートの削除を禁止した...
-
エクセルで複数設定したハイパーリンク先...
-
エクセルで前シートを参照して...
-
Excelのシートを、まとめて表示...
-
シートの保護のあとセルの列、...
-
EXCELで同一フォーマットのシー...
-
EXCELのシートをまたぐ場合
-
エクセルで毎回1枚目のシートを...
-
エクセルで、売り上げの日計と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルで前シートを参照して...
-
Excel、同じフォルダ内のExcel...
-
特定のシートの削除を禁止した...
-
EXCEL:同じセルへどんどん足し...
-
エクセル 計算式も入っていない...
-
Excelで金銭出納帳。繰越残高を...
-
複数シートの特定の位置に連番...
-
エクセルでファイルを開いたと...
-
シートの保護のあとセルの列、...
-
Accessのスプレッドシートエク...
-
VBAで条件によりフォントサイズ...
-
VBAでシートコピー後、シート名...
-
エクセルで前のシートを連続参...
-
エクセルVBAでパスの¥マークに...
-
EXCELで同一フォーマットのシー...
-
Excelで同じシートのコピーを一...
おすすめ情報