In Event printer fails
The onerror statement clears the error - you don't need the added err.clear
in your example.
For example:
Sub TestErrClear()
On Error Resume Next
Err.Raise 1004
Debug.Print Err.Number
On Error Resume Next
Debug.Print "after resume", Err.Number
End Sub
--
Regards,
Tom Ogilvy
"Brad Vontur" wrote in message
...
In the code you use earlier in the procedure you can find the answer to
your question. The 'On Error Resume Next' statement says to just skip over
any errors. So when it tries to assign the Sheet name to a name that may
not exist, it would just skip that error. Then the programmer who wrote
that code had errors turned back on with the statement 'On Error GoTo 0'.
So you can precede and proceed any code you expect to have an error with
those statements.
For example:
On Error Resume Next
sh.Range("PRGM").PrintOut
On Error GoTo 0
You might want to evaluate the error code however, so you can notify your
user that there was a printing problem. But since we ignored errors earlier
in the procedure, we need to clear (the Err object's Clear method) the Err,
so we can evaluate properly. Consider these changes:
On Error Resume Next
Err.Clear
sh.Range("PRGM").PrintOut
If Err.Number < 0 Then msgbox "There was an error
printing."
On Error GoTo 0
I hope that helps.
-Brad
----- Graham wrote: -----
I have a procedure detailed below which was created, thanks to
support from
this group, to remove highlighted areas from worksheets before
printing an
area and then after printing to return the sheet to the areas
highlighted as
before. This works fine but there is a problem which can occur in two
situations. If the procedure is activated (from a button ) when a
printer is
not connected or if a printer error occurs during printing (which
does
happen on some network printers), then the sheet is left with the
areas
without the highlights. ie the line to restore the highlights is
after the
print command as you will see. Is there a way to error trap for this
type of
situation? I as always value any help or guidance.
Sub printmargins()
Dim myRng As Range
Dim myColorIndex As Long
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
If sh.Range("C2").Value 0 Then
Set myRng = Nothing
On Error Resume Next
Set myRng = sh.Range(sh.Name)
On Error GoTo 0
If myRng Is Nothing Then
'do nothing, it didn't have a range with the worksheet
name
Else
myColorIndex = myRng(1).Interior.ColorIndex
myRng.Interior.ColorIndex = xlNone
With sh.PageSetup
.Orientation = xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1
.LeftMargin =
Application.InchesToPoints(0.551181102362205)
.RightMargin =
Application.InchesToPoints(0.15748031496063)
End With
sh.Range("PRGM").PrintOut
myRng.Interior.ColorIndex = myColorIndex
End If
End If
Next sh
End Sub
Kind regards,
Graham Haughs
Turriff, Scotland
|