- ベストアンサー
左隣のシートをコピーして挿入
よろしくお願いします。 エクセルで左にあるシートをコピーして右に新たに挿入する(キーボードで作業した場合、左のシートをクリックしてctrlキー+左クリックで右にドラッグしてはなす)マクロってどうやったらよろしいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まず初心者なら、シートの操作をし、マクロの記録を採ってコードをながめて、考えてから質問すること。的を絞れるようになるのが学習だ。 マクロの記録は 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)
sub macro1() if activesheet.index = 1 then activesheet.copy after:=activesheet else activesheet.previous.copy before:=activesheet end if end sub みたいな?
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
>左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。 Sheets(1)は名前ではありません。ためしもしないでエラーとか言わないように。 じゃあ Activesheet.Copy After:=Activesheet こうですか? 「左隣」の意味が不明ですが、これでアクティブなシートを右隣にコピーします。
- ・真 綾・(@Ma-yan_bh1011)
- ベストアンサー率30% (79/257)
Sheets(1).copy After:=Sheets(Sheets.Count) それぞれの意味は自分で確認してください。
補足
すいません。 左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。 左隣のシートの名前がどんな名前でも左隣のシートをコピーして挿入するマクロが知りたいです。
お礼
ご回答ありがとうございます。 Activesheet.Copy After:=Activesheetで隣のシートがコピーできました。 助かりました。