• 締切済み

ExcelVBAを使って、行の削除と削除した行の分だけ残りの行を上につめるプログラムを作りたいのですが...

ExcelVBAを使って、行の削除と削除した行の分だけ残りの行を上につめるプログラムを作りたいのですが... 例えば、 A 1 ○ ------- B 2 ○ ------- C 3 × ------- D 4 ○ ------- E 5 × ------- F 6 × という表があったとして、コマンドボタンをクリックすると×がついている行を削除して、 A 1 ○ ------- B 2 ○ ------- D 4 ○ という風に×のあった行をつめるようなプログラムを組みたいです。 私が作ったのはループをまわす中で×を見つけるとその、下の行のセルを各々ひとつ上に上げていくというプログラムです。これだとひとつのセルごとに処理していくのでデータが多いとボタンを押してから処理が終わるまでに時間がかかってしまいます。 行をまとめて消して、その下の行を上に持ち上げる方法だと処理が早くなりそうなのですがそのプログラムがイマイチわかりません。 お分かりになるかたがいらっしゃれば、ご教授お願いします。  

みんなの回答

回答No.1

Sub test() Range("C1").Select Selection.Sort Key1:=Range("C1"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Cells.Find(What:="×", After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ True).Activate Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete End Sub