Deleting ranges of rows from a spreadsheet
Instead of looping through every single line and then deleting it if it matches your criteria, you could build a string that contains the exact ranges you want to delete.  Then once the loop is complete you could call a single Range().Delete call.  You also can make the macro take in a string that you wish to delete.

Sub MacroDelete(S As String)

Dim i As Long
Dim LR As Long

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

LR = Cells(Rows.Count, 1).End(xlUp).Row

Dim RangeToDelete As String
Dim Count As Integer
Dim numRowsToDelete As Integer

RangeToDelete = ""
Count = 0

' cheap way to get the total amount we want to delete
numRowsToDelete = Application.WorksheetFunction.CountIf(Range("E:E"), S) - Application.WorksheetFunction.CountIf(Range("E1:E2"), S)

For i = LR To 2 Step -1

' build the range string
If Range("E" &amp; i) = S Then
    Count = Count + 1
    RangeToDelete = RangeToDelete &amp; i &amp; ":" &amp; i
    If Count &lt; numRowsToDelete Then
        RangeToDelete = RangeToDelete &amp; ","
    End If
End If

Next i

' delete all the rows found matching S
Range(RangeToDelete).Delete Shift:=xlUp

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub


You can see @D_Zab's answer for an understanding on how to call subs or functions from other subs