| 
    
     |  | こんにちは。かみちゃん です。 
 >Forステートメントと
 >If文で
 >☆ではない行を削除したいのですが、
 
 For〜Nextを必ず使わないといけないのですか?
 オートフィルタを使ったり、数式を埋め込んで対象行を一括削除するなど方法は
 いろいろあるのですが・・・
 
 >削除される行と削除されない行が
 >できてしまいます。
 
 For〜Nextを使って行を削除する場合は、下の行から順番に削除すれば、うまくいきます。
 行を削除したら、上に詰められるからです。
 もちろん、上から順番に削除する場合もできますが、ややこしくなりますので。
 
 下から順番に削除する場合は、以下のような感じでできます。
 
 Sub test()
 Dim r As Long, 銘柄数 As Long
 
 With Workbooks("×××.xls").Worksheets(2)
 銘柄数 = .UsedRange.Rows.Count
 '削除対象行を最下行からチェックする。
 For r = 銘柄数 To 1 Step -1
 With .Cells(r, 6)
 'セルの値が☆ではない場合
 If .Value <> "☆" Then
 'そのセルが含まれる行全体を削除する。
 .EntireRow.Delete
 End If
 End With
 Next r
 End With
 End Sub
 
 |  |