アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

例えば、

A 1 ○
-------
B 2 ○
-------
C 3 ×
-------
D 4 ○
-------
E 5 ×
-------
F 6 ×

という表があったとして、コマンドボタンをクリックすると×がついている行を削除して、


A 1 ○
-------
B 2 ○
-------
D 4 ○
という風に×のあった行をつめるようなプログラムを組みたいです。


私が作ったのはループをまわす中で×を見つけるとその、下の行のセルを各々ひとつ上に上げていくというプログラムです。これだとひとつのセルごとに処理していくのでデータが多いとボタンを押してから処理が終わるまでに時間がかかってしまいます。

行をまとめて消して、その下の行を上に持ち上げる方法だと処理が早くなりそうなのですがそのプログラムがイマイチわかりません。

お分かりになるかたがいらっしゃれば、ご教授お願いします。
 

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!