• ベストアンサー

マクロの作成 行の移動

マクロの作成 行の移動 ワークシート上の指定行を最終行の次へ移動し、移動した後の空白となった指定行を削除するマクロの作り方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

選択した行を削除して、最下行に追加するなら以下のようなコードで実行できると思います Selection.Cut Range("A2").End(xlDown).Offset(1, 0).Activate Selection.Insert Shift:=xlDown

tigira
質問者

お礼

ありがとうございました。 簡単に設定できました。これで単語の暗記がはかどります。 感謝申し上げます。次回の質問に出くわした折にはまた教えてください。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>初心者でこれをどこへどのように処置したらよいのかもわかりません。簡単な作業を自動でマクロ登録してマクロボタンに登録はできるのですが。 もしマクロコードの内容が全く理解できないのであれば、コードに重大なミスがあっても検証できないので(かつ実行結果がCtrl+Zで元に戻せないので)、少なくともマクロ処理はしないほうが良いと思います。 このような操作であれば、単純に選択範囲をShiftキーを押しながらドラッグして最下行(の下の行間)にドロップするセルの移動操作を行うことをお勧めします。 このように、多くの操作はエクセルの一般機能や関数だけで処理することができます。 もしマクロをマスターしたいなら、一般機能を十分に使えるようになってから、マクロの記録などの機能でコードを作成してみて、マクロを勉強されたほうが、上達の早道になるような気がします。

tigira
質問者

お礼

ありがとうございました。今まではshiftキィーとドラッグで間に合っていたのですが数百行に増えて時間ばかりかかってしまってイラついていました。今日からは極端に速くなり楽しめながらできます。感謝申し上げます。

全文を見る
すると、全ての回答が全文表示されます。
  • mar00
  • ベストアンサー率36% (158/430)
回答No.6

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は下にシフトして移動です。

tigira
質問者

お礼

対処できました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> 初心者でこれをどこへどのように処置したらよいのかもわかりません。 VAEの画面でSheet1(動作させたいシート)をダブルクリックして右側にでたウィンドウに sub test() と入力すると Sub test() End Sub になりますので Sub test() 最初に示したコード End Sub となるようにしてください。 マクロの実行でtestを実行してください もしくは、ボタンを作成してそのコードに適用してください。

tigira
質問者

お礼

ありがとうございました。対処できましたのでご報告いたします。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

>ワークシート上の指定行を最終行の次へ移動し >移動した後の空白となった指定行を削除する 質問の意味がよく分かりません。本当は、記録マクロで、その内容を見せていただいたほうがよいですね。「指定行」というのは何を意味するのか分かりません。「指定行」というのを、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

tigira
質問者

補足

質問からしてうまくなくすみませんです。 100行まで入力してあるワークシート上で任意の行を指定してその行を101行目に移動し、指定した任意の空白となった行を削除したいのですが。

全文を見る
すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

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 みたいな感じで

tigira
質問者

補足

早々のご回答ありがとうございます。 初心者でこれをどこへどのように処置したらよいのかもわかりません。簡単な作業を自動でマクロ登録してマクロボタンに登録はできるのですが。ご指導お願いいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

マクロを記録してみて下さい。

tigira
質問者

補足

マクロではなくてプログラム(VBA)というのでしょうか?初心者ですのでお許しください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロ

    エクセルでマクロを組んでるのですがシート1のデータをコピーしてシート2のデータを入力している最終行の次の行にコピーしたいのですが最終行まではEND 下⇒キーで行くのはわかりますが、その次の空白行への移動のやり方がわかりません

  • エクセルマクロ 空白行の削除ですが、コピー時の問題

    いつもお世話になっております。 エクセルのマクロですが、指定したシートの指定した行にデータが 入っていない場合に削除するマクロなんですが、行くつか試してみ ましたが、削除したものをコピーして張り付けると、削除された行も コピーされてしまいます。完全に削除するにはどのようにしたらよい のでしょうか。 空白行のあるデータを、空白を無くしてデータベースにコピーする 作業を行いたいのですが、他によい方法はありますでしょうか。 よろしくお願いします。

  • マクロについて

    見積書をマクロを使用して作成しています。 項目は30行。 (1)IFを使用し追加行の指定をして指定行を空白に以下を1行ずつ移動 させたい場合、どのように指定すればよいですか。 例えば、10行書き込みをして、あとから8行目に追加をしたい場合、 8-10行目を、9-11行目に移動して、8行目を空白にするという感じです。 (2)また、同じく、見積書で項目30行の中で空白が2行あったら「以下余白」の 文字を入れたいと思っています。 この2点についてマクロの作成を教えてください。

  • 行の移動

    ボタンを使って行の移動をさせるマクロを組みたいのですが、うまく動いてくれません。指定した行をエクセルシートの最上段に表示させる書式を教えてください。宜しくお願いします。

  • Excel 空白行を上に詰めるマクロ

    関数を使用して、sheet1からsheet2に必要なデータを抜き取りました。 sheet2のセルには関数が入っています。 sheet2の抽出データには1行単位(まれに2~3行続けて)空白が発生します。 この行を削除し、かつ上に詰めて表示をしたいのですが、下記の条件で実行可能でしょうか? (例) sheet1 ⇒ sheet2   A   B   C     A  B  C 1 あ  い  う   1 あ  い  か 2        か   2 (空白行) 3 き  く   け    3 き  く  し   4 こ  さ   し   4 (空白行) ●2行目、4行目を削除し、且つ5行目以降に入力されている関数は削除したくない ●空白行削除のマクロは自動?(sheet1のデータを変更したら)で実行できるようにしたい よろしくお願いします。

  • 【マクロ】データが1つもない行を削除する

    添付した画像のようなファイルがあります。 この表の中で、データが一つもない行は削除して、上詰めにするマクロを実行したいです。 また、このシートの表は11行で終わっていますが、 他のシートは25行目で終わっていたりとバラバラです。 すべてのシートでこの処理を行いたいと思っていますので、 他のシートで処理を行ってもエラーのでないマクロを教えていただけたら幸いです。 ちなみに、 ・各シートに表はひとつづつ。 ・各シートの表の開始セルは同じ。 ・全シートに対して一気に処理を行いたい。←指定した処理をすべてのシートで行うマクロは作成済なので大丈夫です。

  • エクセルで型番ごとにワークシートをマクロで作る方法

    昨日質問させて頂いたものです。 説明が下手でなんとかうまく伝えられる文章を考えてみました。 やりたいことは、画像のワークシート「メイン」をから[移動またはコピー] で新たにワークシートを作成し、新しいワークシートから 2001の型番よりしたの型番を削除し2001だけのワークシートをつくり、 次に2002の型番より上の2001と2002より下の型番を削除し、 2002だけのワークシートを作りたいです。 つまりは、単体の型番だけのワークシートを作りたいです。 ちなみに1,2,3行は消したくないです。 この一連の作業をマクロで作れる方お願いします。。

  • エクセルで文字最終行の空白セルへ移動

    エクセル2000です。 1000行内で間にとびとび(順不同)に空白セル、他は文字有りです。 (1000行目は文字あり) シートが10個あり、各シートともばらばら(ウィンドー枠固定位置)ですが、ウィンドー枠固定内の行に「最終行へ移動」のボタンを設け、いずれの行からも、最終文字入力の次の行空白セル(AからZ列のいずれか)へ移動したいです。 方法がありますでしょうか? VBAの場合、素人につきVBAへの入力方法等も一緒にお願いします。またVBAの場合、ソフトを立ち上げたら直ぐに実行できるようにしたいです。(立ち上がり時のマクロ警告はあり) よろしくお願いいたします。

  • Excel帳票の余剰行を削除したい

    WinXp、Excel2002環境でVBAを使用して以下の事を行っています。 既作成済みのcsvファイルをExcelのワークシートへ貼り付けて帳票を作成しているのですが、貼り付けるデータの長さが不定の為、罫線を引いた帳票の余白部分を削除したいと思っています。 最終行への移動は Range("c65536").end(xlUp).Select で行えている(筈)ですが、その次の行から罫線を引いた最終行(このカラムはコンスタントで渡せます)迄の範囲指定を今一つ上手く行えず困っています。 あまり凝らずに行範囲選択と削除を行う方法をお教え下さい。

  • Excelで空白行を削除するマクロは?

    マウスやキーボードを使った記録式でマクロを作っています。 その中でシート上に散らばっている数十行の空白行を削除する行程が必要です。 しかし、マウスやキーに依るメニューでは「空白行の削除」と言うのが有りません。 VBEに直接打ち込まないといけない様です。 ステートメントが分かる方が要らしたら教えてください。

スキャナ操作について
このQ&Aのポイント
  • LAN接続された別のパソコンから印刷が出来ますがスキャナが出来ない
  • Windows10の無線LAN接続環境でスキャナが使用できません
  • 関連ソフトのControl Center3を使用してもスキャナの動作ができません
回答を見る

専門家に質問してみよう