HOW FIX ERROR 424 VBA

Hello

i got the error 424 en VBA/excel ,  and i couldn't understand the error or fix.

The error stop in ..... Is Nothing Then DelRange.EntireRow.Delete

Thanks

Itzel


Sub KillStr()
    Dim Myrange As Range, DelRange As Range, C As Range
    Dim FirstAddress As String
    Dim MyStr, MyElm
    
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:F").Select
    Selection.Delete Shift:=xlToLeft
    
 
    MyStr = Array("5GFI10", "5MAC20", "INT515", "5MAC15", "5MAC05", "5MAC10", "5TYC10", "5GVW10")
      
    Set Myrange = Intersect(ActiveSheet.UsedRange, Range("b2:b25000"))
    If Myrange Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
 
    For Each MyElm In MyStr
        Set C = Myrange.Find(MyElm, Myrange.Cells(1), xlValues, xlPart)
        If Not C Is Nothing Then
            Set DelRange = C
            FirstAddress = C.Address
            Do
                Set C = Myrange.FindNext(C)
                Set DelRange = Union(DelRange, C)
            Loop While FirstAddress <> C.Address
        End If
        If Not DelRange Is Nothing Then DelRange.EntireRow.Delete
    Next MyElm

Open in new window

Itzel05Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
DaveConnect With a Mentor Commented:
This looks like one of mine thta has bene adapted. Try this below - it avoids deleting the range until the end which stops the code short cicuiting if the look at range is deleted mid code

Cheers

Dave
Sub KillStr()
    Dim Myrange As Range, DelRange As Range, C As Range
    Dim FirstAddress As String
    Dim MyStr, MyElm
    
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:F").Select
    Selection.Delete Shift:=xlToLeft
    
 
    MyStr = Array("5GFI10", "5MAC20", "INT515", "5MAC15", "5MAC05", "5MAC10", "5TYC10", "5GVW10")
      
    Set Myrange = Intersect(ActiveSheet.UsedRange, Range("b2:b25000"))
    If Myrange Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
 
    For Each MyElm In MyStr
        Set C = Myrange.Find(MyElm, Myrange.Cells(1), xlValues, xlPart)
        If Not C Is Nothing Then
            Set DelRange = C
            FirstAddress = C.Address
            Do
                Set C = Myrange.FindNext(C)
                Set DelRange = Union(DelRange, C)
            Loop While FirstAddress <> C.Address
        End If
    Next MyElm
    If Not DelRange Is Nothing Then DelRange.EntireRow.Delete
End Sub

Open in new window

0
 
Saurabh Singh TeotiaConnect With a Mentor Commented:
There you go...use this...

Saurabh...


Sub KillStr()
    Dim Myrange As Range, DelRange As Range, C As Range
    Dim FirstAddress As String
    Dim MyStr, MyElm
    
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    Columns("F:F").Select
    Selection.Delete Shift:=xlToLeft
    
 
    MyStr = Array("5GFI10", "5MAC20", "INT515", "5MAC15", "5MAC05", "5MAC10", "5TYC10", "5GVW10")
      
    Set Myrange = Intersect(ActiveSheet.UsedRange, Range("b2:b25000"))
    If Myrange Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
 
    For Each MyElm In MyStr
        Set C = Myrange.Find(MyElm, Myrange.Cells(1), xlValues, xlPart)
        If Not C Is Nothing Then
            Set DelRange = C
            FirstAddress = C.Address
            Do
                Set C = Myrange.FindNext(C)
                Set DelRange = Union(DelRange, C)
            Loop While FirstAddress <> C.Address
        End If
        If Not DelRange Is Nothing Then
        DelRange.EntireRow.Delete
       Set DelRange = Nothing
        End If
        
    Next MyElm
End Sub

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.