• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルでシート複製(マクロ))

エクセルでシート複製(マクロ) 〜シート並び順の問題〜

このQ&Aのポイント
  • エクセルでシートを複製するマクロを作成し、シートの並び順について問題が発生しています。
  • 現在のシートよりも左側に新たに複製したシートが配置されるようにしたいのですが、afterをbeforeに変更すると望んだ結果にはなりません。
  • マクロを実行するたびに新しいシートが右側に追加される仕様にしたいです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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)にするだけならもっと簡単ですが,そういうお話じゃないので余計な手間が入っています。 これ以上の新しいヤリタイ事が発生したときは,ついでに聞いちゃえじゃなく新しいご相談として投稿し直してください。

isicorosun
質問者

お礼

思った通りになりました。 結果2つの質問にこたえていただきありがとうございました。 以後気を付けます。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

もっとシンプルに sub macro1() on error resume next worksheets("現在").copy before:=worksheets("現在") activesheet.name = range("C10").value end sub とかでイイです。 >c10の値のシートが「現在」のシートの左側にきてほしい  : >マクロを実行する度にシートが右に増えていくイメージ 書き間違いですかね。

isicorosun
質問者

補足

>マクロを実行する度にシートが右に増えていくイメージ 失礼しました。実行する度に「現在」シートのすぐ左に増えていくイメージです。 c10の値に変化がない場合でマクロを2回実行すると、「c10の値」-「現在(2)」-「現在」となります。 ここを「c10の値」-「c10の値(2)」-「現在」にする事は出来ますか?

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.2

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)
回答No.1

Sheets.Addを使うと、 アクティブシートの左側にシートを挿入します。 ですので、 Sheets.Addを使った後に、 シート名を変えるとかデータのコピーをしては如何?

関連するQ&A