- ベストアンサー
マクロでエクセルの特定のシート名の左シートをコピー
エクセルに202401、202402・・・202404、注意事項、2022、2023、2024という感じでシートが並んでいます。「注意事項」シートの左側のシートをコピーして(この場合202404シート)「注意事項」シートの前に挿入したいのですがどのようにマクロを組めばいいのかわかりません。 できれば、新しいシート名が202405という感じになればありがたいですが複雑になりすぎるようなら202404(2)となってもかまいません。 ネットで検索しても並んだシートの途中のシートの左側をコピーしてそのコピー元の右に挿入するという方法がみつけられませんでした。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
回答No.3の追加です。 何度もすみません 回答No.3で記載忘れてました。 位置関係はこの方が分かりやすいかもしれません。 Sub Test3() Sheets(Sheets("注意事項").Index - 1).Copy Before:=Sheets("注意事項") Sheets(Sheets("注意事項").Index - 1).Name = Val(Sheets(Sheets("注意事項").Index - 2).Name) + 1 End Sub
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1742/2617)
回答No.1、No.2の追加です。 No.1とNo.2では注意事項シートを念のために探していますが 必ず注意事項シートがある場合でしたら以下で試してみてください。 Sub Test2() Dim sIndex As Long sIndex = Sheets("注意事項").Index Sheets(sIndex - 1).Copy Before:=Sheets("注意事項") Sheets(sIndex).Name = Val(Sheets(sIndex - 1).Name) + 1 End Sub
- kkkkkm
- ベストアンサー率66% (1742/2617)
回答No.1の追加です。 以下のような感じでもいけると思います。 分かりやすい方で試してみてください。 Sub Test1() Dim Ws As Worksheet For Each Ws In Worksheets If Ws.Name = "注意事項" Then Sheets(Ws.Index - 1).Copy Before:=Sheets("注意事項") Sheets(Ws.Index - 1).Name = Val(Sheets(Ws.Index - 2).Name) + 1 Exit For End If Next End Sub
- kkkkkm
- ベストアンサー率66% (1742/2617)
以下で試してみてください。 シート名は半角で202402とかになっていると考えています。 Sub test() Dim i As Long For i = 1 To Worksheets.Count If Sheets(i).Name = "注意事項" Then Sheets(i - 1).Copy Before:=Sheets("注意事項") Sheets(i).Name = Val(Sheets(i - 1).Name) + 1 Exit For End If Next End Sub
お礼
早々にご回答いただきましてありがとうございました。 思った通りの動作になりました。