Error handling in VBA is primitive compared to other languages. It is much better to check for error conditions preemptively than to catch errors after they occur. Check to see if files exist before you try to open them, don't assume the function you called succeeded--check the return value. If you practice these steps consistently, you almost never need to handle errors.
When you do need to handle errors, you can be very specific about the scope of the error trap and which errors you're handling. Here is a pattern I have found myself using a lot. You wrap a single line in the error handler, then check the error code. For example, I prefer Toddleson's code above, which checks to see if a worksheet exists by enumerating the existing worksheets, but this an alternative implementation which illustrates the use of tightly focused error handling.
‘ Get worksheet by name. If the worksheet does not exist, create a new worksheet.
Function GetWorksheet(ByVal name As String) As Worksheet
Dim ws As Worksheet
' Turn on error handling.
On Error GoTo Error_NoSuchSheet
Set ws = Worksheets(name)
' Turn off error handling.
On Error GoTo 0
' Create new worksheet.
If ws Is Nothing Then
Set ws = Worksheets.Add
ws.name = name
End If
Set GetWorksheet = ws
Exit Function
Error_NoSuchSheet:
If Err.Description = "Subscript out of range" Then
' Resume execution on the line following the one that threw the error.
Resume Next
Else
' Invoke the default VBA error handler.
Err.Raise Err.Number
End If
End Function
Note that only a specific error on one specific line is handled. An error on any other line will receive the default error handling (VBA pops up a dialog box). The same thing if any other error occurs on that one line. This pattern provides a much more finely granulated control of error conditions. This is not necessarily the best way to handle an error in every situation and it is far from the only way, but I think it has significant advantages over the pattern you described.
Of course any error handling, or no error handling at all, is significantly better than this.
Function IgnoreAllErors()
' Ignore all errors.
On Error Resume Next
' Your code here
End Function
Please don't do this.