- ベストアンサー
エクセルでシート複製(マクロ) 〜シート並び順の問題〜
- エクセルでシートを複製するマクロを作成し、シートの並び順について問題が発生しています。
- 現在のシートよりも左側に新たに複製したシートが配置されるようにしたいのですが、afterをbeforeに変更すると望んだ結果にはなりません。
- マクロを実行するたびに新しいシートが右側に追加される仕様にしたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>「c10の値」-「c10の値(2)」-「現在」にする事は出来ますか? C10の値が,そもそもシート名として使える正しい内容になっているとします (その意味では,C10の値がダブっている(シートが既にある)というのも,元のご相談からすればヤリタイ事から間違ってると言う事もできます) sub macro1r1() dim n as long worksheets("現在").copy before:=worksheets("現在") on error goto errhandle activesheet.name = range("C10").value & iif(n = 0, "", format(n, "(#)")) exit sub errhandle: n = n + 1 resume end sub #(2)にするだけならもっと簡単ですが,そういうお話じゃないので余計な手間が入っています。 これ以上の新しいヤリタイ事が発生したときは,ついでに聞いちゃえじゃなく新しいご相談として投稿し直してください。
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
もっとシンプルに sub macro1() on error resume next worksheets("現在").copy before:=worksheets("現在") activesheet.name = range("C10").value end sub とかでイイです。 >c10の値のシートが「現在」のシートの左側にきてほしい : >マクロを実行する度にシートが右に増えていくイメージ 書き間違いですかね。
補足
>マクロを実行する度にシートが右に増えていくイメージ 失礼しました。実行する度に「現在」シートのすぐ左に増えていくイメージです。 c10の値に変化がない場合でマクロを2回実行すると、「c10の値」-「現在(2)」-「現在」となります。 ここを「c10の値」-「c10の値(2)」-「現在」にする事は出来ますか?
- y_shimizu
- ベストアンサー率41% (27/65)
before指定で合ってます。 beforeで指定したシートの前にコピーされるので、 その後のシート名を変えるところが最後のシートの名前変更のままだと 例えばシート1のみのブックで シート1のbeforeにコピー =>シート1(2),シート1 最後のシートの名前変更 =>シート1(2),xxx となってしまいます。 簡単に書くと以下のようにすればいいと思います。 Dim a As Worksheet Set a = Sheets("Sheet1") Call a.Copy(before:=a) a.Previous.Name = a.Range("a1").Value Set a = Nothing
- shintaro-2
- ベストアンサー率36% (2266/6245)
Sheets.Addを使うと、 アクティブシートの左側にシートを挿入します。 ですので、 Sheets.Addを使った後に、 シート名を変えるとかデータのコピーをしては如何?
お礼
思った通りになりました。 結果2つの質問にこたえていただきありがとうございました。 以後気を付けます。