- ベストアンサー
マクロの作成 行の移動
マクロの作成 行の移動 ワークシート上の指定行を最終行の次へ移動し、移動した後の空白となった指定行を削除するマクロの作り方を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
選択した行を削除して、最下行に追加するなら以下のようなコードで実行できると思います Selection.Cut Range("A2").End(xlDown).Offset(1, 0).Activate Selection.Insert Shift:=xlDown
その他の回答 (6)
- MackyNo1
- ベストアンサー率53% (1521/2850)
>初心者でこれをどこへどのように処置したらよいのかもわかりません。簡単な作業を自動でマクロ登録してマクロボタンに登録はできるのですが。 もしマクロコードの内容が全く理解できないのであれば、コードに重大なミスがあっても検証できないので(かつ実行結果がCtrl+Zで元に戻せないので)、少なくともマクロ処理はしないほうが良いと思います。 このような操作であれば、単純に選択範囲をShiftキーを押しながらドラッグして最下行(の下の行間)にドロップするセルの移動操作を行うことをお勧めします。 このように、多くの操作はエクセルの一般機能や関数だけで処理することができます。 もしマクロをマスターしたいなら、一般機能を十分に使えるようになってから、マクロの記録などの機能でコードを作成してみて、マクロを勉強されたほうが、上達の早道になるような気がします。
お礼
ありがとうございました。今まではshiftキィーとドラッグで間に合っていたのですが数百行に増えて時間ばかりかかってしまってイラついていました。今日からは極端に速くなり楽しめながらできます。感謝申し上げます。
- mar00
- ベストアンサー率36% (158/430)
Sub Macro1() GYOU = Application.InputBox("行を選択してください", "行指定") Rows(GYOU).Cut Rows(Range("A" & Rows.Count).End(xlUp).Row + 1).Insert Shift:=xlDown End Sub 行を下にシフトして移動するようにしています。 マクロを実行するとインプットボックスが出てくるので移動したい行の番号を 入力して下さい。(例 8行目なら8と入力) 8行目移動する GYOU = Application.InputBox("行を選択してください", "行指定")で 移動する行番号を取得 GYOU = 8になります。 Rows(GYOU).CutはRows(8).Cutと同じ意味です。 Rows(Range("A" & Rows.Count).End(xlUp).Row + 1).Insert Shift:=xlDownは Range("A" & Rows.Count).End(xlUp).Rowで最終行を取得 最終行が20行目ならRange("A20")というふうになります。 +1は最終行の次の行にするために加算しています。 従って Rows(Range("A" & Rows.Count).End(xlUp).Row + 1)=Rows(Range("A21")) Range("A21")は21行目ですから Rows(Range("A21"))=Rows(21)ということになります。 .Insert Shift:=xlDownは下にシフトして移動です。
お礼
対処できました。ありがとうございました。
- kmetu
- ベストアンサー率41% (562/1346)
> 初心者でこれをどこへどのように処置したらよいのかもわかりません。 VAEの画面でSheet1(動作させたいシート)をダブルクリックして右側にでたウィンドウに sub test() と入力すると Sub test() End Sub になりますので Sub test() 最初に示したコード End Sub となるようにしてください。 マクロの実行でtestを実行してください もしくは、ボタンを作成してそのコードに適用してください。
お礼
ありがとうございました。対処できましたのでご報告いたします。
- Wendy02
- ベストアンサー率57% (3570/6232)
>ワークシート上の指定行を最終行の次へ移動し >移動した後の空白となった指定行を削除する 質問の意味がよく分かりません。本当は、記録マクロで、その内容を見せていただいたほうがよいですね。「指定行」というのは何を意味するのか分かりません。「指定行」というのを、4~7に選択して、マクロを実行すれば、左から右のように変わります。 前 後 1 1 2 2 3 3 4 8 5 → 9 6 10 7 4 8 5 9 6 10 7 私の解釈なら、こういうようになりましたね。(入門用のコードにしています) '// Sub Test1() If Selection.Rows.Count > 1 Then With Selection Set rng = .Cells rng.Copy Cells(Rows.Count, .Column).End(xlUp).Offset(1) rng.EntireRow.Delete ActiveCell.Select End With End If End Sub
補足
質問からしてうまくなくすみませんです。 100行まで入力してあるワークシート上で任意の行を指定してその行を101行目に移動し、指定した任意の空白となった行を削除したいのですが。
- kmetu
- ベストアンサー率41% (562/1346)
Dim mRow As Range Set mRow = Application.InputBox("行を選択してください", "行指定", Type:=8) mRow.Copy Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial mRow.Delete みたいな感じで
補足
早々のご回答ありがとうございます。 初心者でこれをどこへどのように処置したらよいのかもわかりません。簡単な作業を自動でマクロ登録してマクロボタンに登録はできるのですが。ご指導お願いいたします。
- aokii
- ベストアンサー率23% (5210/22062)
マクロを記録してみて下さい。
補足
マクロではなくてプログラム(VBA)というのでしょうか?初心者ですのでお許しください。
お礼
ありがとうございました。 簡単に設定できました。これで単語の暗記がはかどります。 感謝申し上げます。次回の質問に出くわした折にはまた教えてください。