人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

マクロの質問です。

Selection.Insert Shift:=xlToRight
Application.WindowState = xlMaximized
Columns("J:M").Select
Selection.Delete Shift:=xlToLeft
Columns("L:X").Select
Selection.Delete Shift:=xlToLeft
Columns("M:T").Select
Selection.Delete Shift:=xlToLeft
Columns("Q:Q").Select
Selection.Delete Shift:=xlToLeft
Columns("T:AO").Select
Selection.Delete Shift:=xlToLeft

と、記述してみましたが
思うより多くの行が削除されてしまいます。
アドバイスをお願いします。

●質問者: mika555
●カテゴリ:コンピュータ インターネット
✍キーワード:Ao application DELETE SELECT アドバイス
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● きゃづみぃ
●35ポイント

削除する順番を変更したらいいですね。

右側のほうから削除するようにしたらいいでしょう。

Columns("T:AO").Select

Selection.Delete Shift:=xlToLeft

これを 最初にする。

以降、右側のほうから削除。



http://q.hatena.ne.jp/answer


2 ● りくっち
●35ポイント

恐らくマクロの記録で次のようなことをされたのだろうと思います。


画面を最大化

J:M列を選択して列削除

L:X列を選択して列削除

M:T列を選択して列削除

Q:Q列を選択して列削除

T:AO列を選択して列削除


この場合全て「列」を削除していると思うのですが、

削除されるのは「行」でしょうか?

また、↑のマクロでは多く削除されてしまうということですが、

実際にはどの列を削除したいのでしょうか?

今のマクロの場合は、選択して消す度に列が詰まって行ってしまうので、

実際にはJ:Mを削除した後それまでL:Xだった列はJ:Tに詰まっているといった感じです。

以上がはっきりするともっと具体的にアドバイスできると思います。


http://www.moug.net/


3 ● airplant
●10ポイント

私も「マクロの記録」をメインにしていた頃、似たような経験あります。ただし、記録でやっている場合は、忠実に再現されます。

今回の場合、記録したものを変更して、列がずれてしまい、余計な分も削除されたのだと思われます。


列や行は、削除に限らず一発で複数範囲を指定できます。加工前の列で削除したいところを単純に区切って、次のように記述すると楽です。

 Range("J:M,L:AD,AX:AX").Delete Shift:=xlToLeft '列の場合
 Range("1:2,5:6,8:8").Delete Shift:=xlUp  '行の場合

マクロの記録だとselectしてからという操作で記録されますが、selectしなくても一向に構いません。

「Shift:=xxxx」のところは、指定しなくても行や列の場合は、動きます。


copy & pasteも同じようにselectしないで直接書けます。

 Range("A1:A2").value = Range("D10:D11").value

http://www11.plala.or.jp/koma_Excel/

http://d.hatena.ne.jp/airplant/


4 ● yyok
●10ポイント

それぞれのSelection.Deleteが実行された段階で、カラムの位置がずれますが大丈夫ですか。

削除対象のカラムが複数あるなら例えば、

Range("B:M,Q:S,Z:AC").Delete

のように一度に指定して削除したほうが間違えなくていいと思います。


http://dummy

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ