プロが教える店舗&オフィスのセキュリティ対策術

よろしくお願いします。

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

A 回答 (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解説書の読書で学ばなければ仕方がない。
    • good
    • 0

sub macro1()


 if activesheet.index = 1 then
 activesheet.copy after:=activesheet
 else
 activesheet.previous.copy before:=activesheet
 end if
end sub
みたいな?
    • good
    • 0

>左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。


Sheets(1)は名前ではありません。ためしもしないでエラーとか言わないように。

じゃあ
Activesheet.Copy After:=Activesheet
こうですか?
「左隣」の意味が不明ですが、これでアクティブなシートを右隣にコピーします。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Activesheet.Copy After:=Activesheetで隣のシートがコピーできました。

助かりました。

お礼日時:2011/10/04 14:40

Sheets(1).copy After:=Sheets(Sheets.Count)



それぞれの意味は自分で確認してください。

この回答への補足

すいません。
左隣のシートがシート1とかの名前ではないのでそれだとエラーになってしまいます。

左隣のシートの名前がどんな名前でも左隣のシートをコピーして挿入するマクロが知りたいです。

補足日時:2011/10/04 14:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!