【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

このたび初めて質問させていただきます。
周囲にVBAを扱うひとがいないため、初歩的(たぶん?)な質問をさせてください。

以下のようなマクロを記録したのですが、一部を編集したいと考えております。

Columns("F:H").Select
Selection.Insert Shift:=xlToRight
Columns("A:B").Select
Selection.Cut
Range("F1").Select
ActiveSheet.Paste
Columns("J:J").Select→J列固定ではなく右端の列と設定したい。
Selection.Cut
Range("H1").Select
ActiveSheet.Paste
Columns("A:B").Select
Selection.Delete Shift:=xlToLeft

Columns("J:J").SelectをJ列固定ではなく右端の列を1列設定し切り取りがしたいのです。Range("A2").End(xlToRight).Select
ActiveCell.Offset(-1,0).End(xlDown).Select
と書き換えてみたのですが、うまく作動しませんでした。

どなたか教えていただけませんでしょうか?

A 回答 (1件)

>Columns("F:H").Select


>Selection.Insert Shift:=xlToRight

は、
 Columns("F:H").Insert
に、

>Columns("A:B").Select
>Selection.Cut
>Range("F1").Select
>ActiveSheet.Paste

は、
 Columns("A:B").Cut Destination:=Range("F1")
に、

>Columns("J:J").Select→J列固定ではなく右端の列と設定したい。
>Selection.Cut
>Range("H1").Select
>ActiveSheet.Paste

は、
 Columns(Cells(1, Columns.Count).End(xlToLeft).Column).Cut Destination:=Range("H1")
に、

>Columns("A:B").Select
>Selection.Delete Shift:=xlToLeft

は、
 Columns("A:B").Delete
に、変えることができます。 結局、

Columns("F:H").Insert
Columns("A:B").Cut Destination:=Range("F1")
Columns(Cells(1, Columns.Count).End(xlToLeft).Column).Cut Destination:=Range("H1")
Columns("A:B").Delete

の、計4行でお望みの処理ができます。

解説はしませんので、ヘルプと首っ引きで解答を見つけてください。 苦労すると身に付きます。 安易に聞くとすぐ忘れます。 私もそうして来ました。
省略形が使われています。 R1C1 形式での表現もあります。
尚、VBA のヘルプは、VBA Editor のヘルプを見てください。 データの書かれているところのヘルプはエクセルのものです。 間違えないように。

どうしても、解説が必要になりましたら、補足にその旨お書きください。
    • good
    • 0
この回答へのお礼

ご回答どうもありがとうございました!
いただいたアドバイスをもとに、下記にて思い通りの指示をかけることができました。

Columns("F:H").Insert
Columns("A:B").Cut Destination:=Range("F1")
Range("I2").End(xlToRight).EntireColumn.Cut Destination:=Range("H1")
Columns("A:B").Delete

本を読んだり、サイトを見たりして、ツギハギでこなしているところです。おっしゃるとおり、ゆっくり時間をとって勉強していきたいと思います。

お忙しいなか、どうもありがとうございました。

お礼日時:2009/11/11 12:15

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


おすすめ情報