On Error Resume Next should generally be used only in simple single purpose subs and functions that are called by your main subs (e.g. checking of a workbook is open or a sheet exists). Beyond that, error handling is really for catching unexpected errors or errors that you cannot readily handle in any other way. Typically you have an:
On Error Goto err_handler
line at the start (where 'err_handler' is a label in your code)
then an error handler section at the end, which in my case usually returns you to a clean-up section at the end of the code. For example: