If its row is deleted the fRange becomes nothing. and the fRange.Row statement will throw an error. So storing its row number in a variable will handle this.



Sub M_snb()


    Set fRange = Application.InputBox("Please Select the First Row of the Range", "First Row Selection", Type:=8)
FR = fRange.Row
    For Each sh In Sheets
        sh.UsedRange.Columns(1).Offset(FR - 1).SpecialCells(4).EntireRow.Delete
        sh.Rows(FR).SpecialCells(4).EntireColumn.Delete
        For Each it In Array("NE", "NW", "YH", "EM", "WM", "E", "L", "IL", "OL", "SE", "SW")
            sh.UsedRange.Offset(FR - 1).Replace it, "=12/0", xlWhole
        Next
        sh.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
    Next

End Sub