| 
    
     |  | あれあれ、最初の例題とだと条件が違うのですね。 行を削除という行為を取っていいのですか?
 1行目はヘッダーのようですね。
 それなら、もし、SpecialCellsメソッドで削除行が取得できるくらいの行数なのであれば、
 オートフィルターを使って空白行に絞込み、削除するってでのいいかもしれません。
 手操作による記録でも取ってみて下さい。
 表題から、行削除は行わず、整列させるのみと解釈したのですが、そうじゃないんでしょうか?
 
 で、最初に提示したコード例ですが、
 >新規シートで動作させて見るとB列で作業しているように見えました。
 とのことですが、
 >Set r=Set r = Range("A1:A8")
 として、rを特定した上で、
 >r.EntireColumn.Insert xlShiftToRight
 とA列の左に新しい列を挿入している積もりなんですが、B列で作業しましたか?
 そうなっちゃいますかね?
 本当にそうなのか、もう一度Step実行して確認してみてくれませんか?
 Sortという手法を取っていますが、結果的には、
 空白行を下方に集合させるだけで、元の並びは保障したつもりなんですけどね〜。
 
 あと、
 >廃番のコードをクリアして整列させたい訳けでが入力順番は
 >変えたくありません。(ソートすると順番が変わってしまいます)
 廃番のコードとか、例示にない項目をいきなり登場させられても分からんのです。
 一応、2度目の提示のあたデータ例をもとに、かってに
 A列が空白の行を対象に下方に持っていくというコードにしてみると、
 
 Sub sample2()
 Dim Target As Range
 Dim tmpR As Range
 Dim r As Range, c As Range
 With ActiveSheet
 Set r = .Range("A" & .Rows.Count).End(xlUp) '☆
 Set r = .Range(r.EntireColumn.Cells.Item(1), r)
 Set Target = Intersect(r.EntireRow, .Columns("A:G"))
 End With
 r.EntireColumn.Insert xlShiftToRight
 With r.Offset(, -1)
 .Item(1).Value = 1
 .DataSeries
 For Each c In r
 If IsEmpty(c) Then c.Offset(, -1).ClearContents
 Next
 Union(Target, .Cells).Sort Key1:=.Columns(1), Order1:=xlAscending, _
 Header:=xlNo, Orientation:=xlTopToBottom
 .EntireColumn.Delete xlShiftToLeft
 End With
 End Sub
 
 もし、調査対象が、A列じゃなくB列の空白をってことなら、☆のステップをB列に変更して下さい。
 
 
 なお、ichinoseさんの以下は、私向けですか?
 >質問者さんの記述が悪いと一概には言えませんね!!
 私は、別に悪いと言った訳ではありません。
 最初の例示は、1列だけだったのでそれを鵜呑みにしたコード例を提示しましたが、
 どうも2回目の質問では、複数列の話なんだなってことまでは分かったので、
 それなら、同様にちゃんとデータ例を提示してもらいたいと思ったまでです。
 なお、
 >ただ、整列は一般的にソート(並べ替え)と解釈されますからね。
 私がSortで整列させようとしていると思われたのでしょうか?
 それについては、もちろん、並び替えないでという条件は最初の提示例で認識してましたよ。
 
 
 |  |