2017-06-09 4 views
0

Ich versuche, ein Makro zu schreiben, um leere Zellen (Wert "", nicht leer, wie Formeln enthalten) in einem benannten Bereich zu löschen, und habe Probleme bei der Korrektur Laufzeitfehler '424', dass ein "Objekt [ist] erforderlich."Looping durch den benannten Bereich zum Löschen von enthaltenen leeren Zellen

Sub DeleteBlankCellsInANamedRange() 
'Deletes empty cells in a named range (shifts cells up) 

For Each c In Range("myNamedRange") 
    If c.Value = 0 Then 
     myNamedRange.Cells.Delete Shift:=xlUp 'error 424 throws here 
    End If 
Next c 
MsgBox "Macro completed" 

End Sub 

Ich denke, das Problem ist mit Syntax, und haben verschiedene Dinge ohne Glück versucht. Irgendwelche Ideen? Bitte teilen. Danke für Ihre Hilfe!

+0

Verwenden Sie 'Option Explicit'. Benutze 'Range (" myNamedRange "). Cells' Es kann entweder" myNamedRange "oder" myNamedRange "sein. Verwenden Sie 'c.Delete ...' – cyboashu

+0

Danke @cyboashu --- Arbeitete wie ein Charme. – PBG

+0

Eigentlich @cyboashu, das Makro löschte jede Zelle in dem Bereich. Der gesamte Bereich ist nicht leer. Irgendwelche Ideen dazu? – PBG

Antwort

0
Sub DeleteBlankCellsInANamedRange() 
'Deletes empty cells in a named range (shifts cells up) 

Dim rngCell  As Range 
Dim rngDelete As Range 

For Each rngCell In Range("myNamedRange").Cells 
    If rngCell.Value = 0 Then 

     If Not rngDelete Is Nothing Then 
      Set rngDelete = Union(rngDelete, rngCell) 
     Else 
      Set rngDelete = rngCell 
     End If 


    End If 
Next 

    If Not rngDelete Is Nothing Then 
     rngDelete.Delete Shift:=xlUp 
    End If 

MsgBox "Macro completed" 

End Sub 
+0

Hi @cyboashu --- Schätze das sehr, aber es funktioniert nicht. – PBG

+0

Die 'leeren' Zellen, die ich löschen möchte, enthalten Formeln, insbesondere bedingte Formeln, die ihre Werte bei bestimmten Kriterien auf "leer" setzen (""). – PBG

+0

Wenn Sie '' '' löschen möchten, dann verwenden Sie 'If rngCell.Value =" "Dann ' – cyboashu

Verwandte Themen