2017-12-06 26 views
1

D列のすべての空白セルを検出するマクロを作成したいとします。たとえば、D4に空白のセルがある場合、セルB4、C4、D4、E4削除して、空白セルが増えるようにシフトする必要があります。Excel VBA - 行範囲内の空白セルを見つけて削除する

どういうわけか、マクロは何も削除しません。

Dim delREASON As Variant 
Dim findReason As Range 
Dim DelRng As Range 

    With ThisWorkbook.Sheets("getDATA") 
     delREASON = Null 
     For Each findReason In .Range(.Range("D8"), .Range("D8").End(xlDown)) 
      If Not (IsError(Application.Match(findReason.Value, delREASON, 0))) Then 
       If Not DelRng Is Nothing Then 
      Set DelRng = Application.Union(DelRng, .Range(.Cells(findReason.Row, "B"), .Cells(findReason.Row, "E"))) 
     Else 
      Set DelRng = .Range(.Cells(findReason.Row, "B"), .Cells(findReason.Row, "E")) 
     End If 
    End If 
Next 
    End With 

答えて

1

列Dの空白セルを見つけて、隣接する他の列の和集合を作成します。

Dim blnks As Range 
With ThisWorkbook.Sheets("getDATA") 
    On Error Resume Next 
    Set blnks = .Columns("D").SpecialCells(xlCellTypeBlanks) 
    On Error GoTo 0 
    If Not blnks Is Nothing Then 
     Set blnks = Union(blnks.Offset(0, -2), blnks.Offset(0, -1), _ 
          blnks, blnks.Offset(0, 1)) 
     blnks.Delete shift:=xlUp 
    End If 
End With 
+0

私はその時点でほぼありました。どういうわけかそれは非常に長い時間がかかります。 – Bluesector

+0

空白のセルがないときは安全を追加しました。 – Jeeped

+0

ありがとう!プロセスをスピードアップする方法はありますか? – Bluesector

関連する問題