Excel VBA  Unionメソッド

エクセルのVBAで特定の行を削除したい時、Range型の変数に、特定の行全体を追加してゆき、
追加された範囲全体をまとめて削除する方法が速いようである。
ただしACCESSから呼び出すときには注意が必要である。
Unionメソッドの前にエクセルアプリケーションであることを明示する必要がある(xls.Union のように)

‘オブジェクトへの参照を取得 – Excel
Set xls = CreateObject(“Excel.Application”)
Set wkb = xls.Workbooks.Add(Template:=********”)
Set wksSource = wkb.Worksheets(“*****”)

Dim Del_R As Range ‘削除したい領域
Dim i As Long
With wksSource
‘5行目から150までP列のセルをチェックします
For i = 5 To 150

‘P列のセルが0なら変数 Del_R に追加
If .Cells(i, 16).Value = 0 Then
‘最初の空白行に出会ったら行全体を KuhakuGyo にセット
If Del_R Is Nothing Then
Set Del_R = .Rows(i).EntireRow
‘2件目からは順次 Del_R に追加していく
Else
Set Del_R = xls.Union(Del_R, .Rows(i).EntireRow)
End If
End If
Next i
End With

‘空白行があれば一括で削除する
If NotDel_R Is Nothing Then
Del_R.Delete
End If