• ベストアンサー

左隣のシートをコピーして挿入

よろしくお願いします。 エクセルで左にあるシートをコピーして右に新たに挿入する(キーボードで作業した場合、左のシートをクリックしてctrlキー+左クリックで右にドラッグしてはなす)マクロってどうやったらよろしいでしょうか?

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

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

まず初心者なら、シートの操作をし、マクロの記録を採ってコードをながめて、考えてから質問すること。的を絞れるようになるのが学習だ。 マクロの記録は Sub Macro4() Sheets("Sheet1").Select Sheets("Sheet1").Copy Before:=Sheets(3) Sheets("Sheet1 (2)").Select End Sub のようになる。シートの指定が具体的になっている。これを相対化するには、どうするか、ぐらいの質問までは行き着いて質問すること。 左のシートのインデックス番号は Sub test01() MsgBox ActiveSheet.Previous.Index End Sub で判る。 l=ActiveSheet.Previous.Indexで、Sheets("Sheet1")をSheets(l).Selectを置き換える。 Before:=Sheets(3)の3は Sub test01() MsgBox ActiveSheet.Next.Index End Sub で確認できる。 名前でやるなら、 Sub test02() MsgBox ActiveSheet.Previous.Name MsgBox ActiveSheet.Next.Name End Sub をやればわかるだろう。 ーーー 前半のコピーのコードは、お決まりのマクロの記録で出来る。 Previous,Nextは経験やVBA解説書の読書で学ばなければ仕方がない。

その他の回答 (3)

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

sub macro1()  if activesheet.index = 1 then  activesheet.copy after:=activesheet  else  activesheet.previous.copy before:=activesheet  end if end sub みたいな?

回答No.2

>左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。 Sheets(1)は名前ではありません。ためしもしないでエラーとか言わないように。 じゃあ Activesheet.Copy After:=Activesheet こうですか? 「左隣」の意味が不明ですが、これでアクティブなシートを右隣にコピーします。

spitzelt
質問者

お礼

ご回答ありがとうございます。 Activesheet.Copy After:=Activesheetで隣のシートがコピーできました。 助かりました。

回答No.1

Sheets(1).copy After:=Sheets(Sheets.Count) それぞれの意味は自分で確認してください。

spitzelt
質問者

補足

すいません。 左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。 左隣のシートの名前がどんな名前でも左隣のシートをコピーして挿入するマクロが知りたいです。

関連するQ&A

専門家に質問してみよう