|
▼HAM さん:
おじゃまします。
まず調べる範囲ですが、
> Endrow = Cells(Rows.Count, 1).End(xlUp).Row
ですと、A列がたまたま 1行目にだけデータがあったりすると
全範囲を調べることができなくなりますので、ここは
UsedRangeプロパティで範囲を取得しましょう。
あと、本題の「列数」可変のときの空白行削除の件ですが、
UsedRangeの1列目から、最後の列までLoopすればいいと思います。
こんな風に↓
Sub Try1()
Dim EndRow As Long
Dim EndCol As Long
Dim iRow As Long
Dim jCol As Long
EndRow = ActiveSheet.UsedRange.Rows.Count
EndCol = ActiveSheet.UsedRange.Columns.Count
For iRow = EndRow To 1 Step -1
For jCol = 1 To EndCol
If Not IsEmpty(Cells.Item(iRow, jCol)) Then
Exit For
End If
Next
If jCol = EndCol + 1 Then Rows(iRow).Delete
Next
End Sub
あるいは 列を1つづつ調べなくても、「行をまとめて」調べても
いいかと思います。
Sub Try2()
Dim EndRow As Long
Dim iRow As Long
With ActiveSheet.UsedRange
For iRow = .Rows.Count To 1 Step -1
If WorksheetFunction.CountA(.Rows(iRow)) = 0 Then
Rows(iRow).Delete
End If
Next
End With
End Sub
。。。などと、提示コードに合わせて ちまちま書いていたら、
ゆみこん さんから、ナイスアドバイスがありました。(^^
Loopで 行を削除したり挿入したりするときは 下からやるのが安全ですが、
AutoFilterなら そういうこと配慮しなくて一括削除できるのでぼくも
こちらをお勧めします。(1行も抽出されなかったり、1行だけのときは
注意が必要ですが)
では
|
|