<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FLanguage_Basics%2FError_Handler</id>
		<title>VBA/Excel/Access/Word/Language Basics/Error Handler - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FLanguage_Basics%2FError_Handler"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Error_Handler&amp;action=history"/>
		<updated>2026-04-05T00:59:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Error_Handler&amp;diff=1158&amp;oldid=prev</id>
		<title> в 16:33, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Error_Handler&amp;diff=1158&amp;oldid=prev"/>
				<updated>2010-05-26T16:33:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:33, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Error_Handler&amp;diff=1159&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/Language_Basics/Error_Handler&amp;diff=1159&amp;oldid=prev"/>
				<updated>2010-05-26T12:46:32Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==An Example of Code Without Error Handling==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub cmdNoErrorHandler()&lt;br /&gt;
    Call TestError1(1, 0)&lt;br /&gt;
End Sub&lt;br /&gt;
Sub TestError1(Numerator As Integer, Denominator As Integer)&lt;br /&gt;
    Debug.Print Numerator / Denominator&lt;br /&gt;
    msgBox &amp;quot;I am in Test Error&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==An Example of Error Handling Using the On Error GoTo Statement==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub SimpleErrorHandler()&lt;br /&gt;
    On Error GoTo SimpleErrorHandler_Err&lt;br /&gt;
    Dim sngResult As Single&lt;br /&gt;
    sngResult = 1 / 0&lt;br /&gt;
    Exit Sub&lt;br /&gt;
SimpleErrorHandler_Err:&lt;br /&gt;
    msgBox &amp;quot;Oops!&amp;quot;&lt;br /&gt;
    Exit Sub&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==A Simple Error-Handling Routine==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub TestError2()&lt;br /&gt;
On Error GoTo TestError2_Err&lt;br /&gt;
    Debug.Print 1 / 0&lt;br /&gt;
    msgBox &amp;quot;I am in Test Error&amp;quot;&lt;br /&gt;
    Exit Sub&lt;br /&gt;
TestError2_Err:&lt;br /&gt;
    If Err = 11 Then&lt;br /&gt;
        msgBox &amp;quot;Variable 2 Cannot Be a Zero&amp;quot;, , &amp;quot;Custom Error Handler&amp;quot;&lt;br /&gt;
    End If&lt;br /&gt;
    Exit Sub&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==EBEngine.Errors==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
   Public Sub ShowErrors()&lt;br /&gt;
      Dim db   As Database&lt;br /&gt;
      Dim recT As Recordset&lt;br /&gt;
      Dim errE As Error&lt;br /&gt;
   &lt;br /&gt;
      On Error GoTo ShowErrors_Err&lt;br /&gt;
   &lt;br /&gt;
      Set db = CurrentDb()&lt;br /&gt;
       Set recT = db.OpenRecordset(&amp;quot;NonExistantTable&amp;quot;)&lt;br /&gt;
       recT.Close&lt;br /&gt;
    &lt;br /&gt;
ShowErrors_Exit:&lt;br /&gt;
       Exit Sub&lt;br /&gt;
    &lt;br /&gt;
ShowErrors_Err:&lt;br /&gt;
       Debug.Print &amp;quot;Err = &amp;quot; &amp;amp; Err.Number &amp;amp; &amp;quot;: &amp;quot; &amp;amp; Err.Description&lt;br /&gt;
       Debug.Print&lt;br /&gt;
    &lt;br /&gt;
       For Each errE In DBEngine.Errors&lt;br /&gt;
          Debug.Print &amp;quot;Errors: &amp;quot; &amp;amp; errE.Number &amp;amp; &amp;quot;: &amp;quot; &amp;amp; errE.Description&lt;br /&gt;
       Next&lt;br /&gt;
       Resume ShowErrors_Exit&lt;br /&gt;
    &lt;br /&gt;
    End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==error handling by checking the Error code==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     Public Sub ErrorHandling()&lt;br /&gt;
        On Error GoTo ErrorHandling_Err&lt;br /&gt;
        Dim dblResult As Double&lt;br /&gt;
        dblResult = 10 / InputBox(&amp;quot;Enter a number:&amp;quot;)&lt;br /&gt;
        MsgBox &amp;quot;The result is &amp;quot; &amp;amp; dblResult&lt;br /&gt;
ErrorHandling_Exit:&lt;br /&gt;
        Exit Sub&lt;br /&gt;
ErrorHandling_Err:&lt;br /&gt;
        Select Case Err.Number&lt;br /&gt;
        Case 13         &amp;quot; Type mismatch - empty entry&lt;br /&gt;
           Resume&lt;br /&gt;
        Case 11         &amp;quot; Division by 0&lt;br /&gt;
           dblResult = 0&lt;br /&gt;
           Resume Next&lt;br /&gt;
        Case Else&lt;br /&gt;
           MsgBox &amp;quot;Oops: &amp;quot; &amp;amp; Err.Description &amp;amp; &amp;quot; - &amp;quot; &amp;amp; Err.Number&lt;br /&gt;
           Resume ErrorHandling_Exit&lt;br /&gt;
        End Select&lt;br /&gt;
     End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ignoring an Error and Continuing Execution==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub TestResumeNext()&lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    Kill &amp;quot;AnyFile&amp;quot;&lt;br /&gt;
    If Err.number = 0 Then&lt;br /&gt;
    Else&lt;br /&gt;
        MsgBox &amp;quot;the Error Was: &amp;quot; &amp;amp; Err.Description&lt;br /&gt;
    End If&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Looking Up the Call Stack for a Previous Error Handler==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub Func1()&lt;br /&gt;
    On Error GoTo Func1_Err&lt;br /&gt;
    Debug.Print &amp;quot;I am in Function 1&amp;quot;&lt;br /&gt;
    Call Func2&lt;br /&gt;
    Debug.Print &amp;quot;I am back in Function 1&amp;quot;&lt;br /&gt;
    Exit Sub&lt;br /&gt;
Func1_Err:&lt;br /&gt;
    msgBox &amp;quot;Error in Func1&amp;quot;&lt;br /&gt;
    Resume Next&lt;br /&gt;
End Sub&lt;br /&gt;
Sub Func2()&lt;br /&gt;
    Debug.Print &amp;quot;I am in Func2&amp;quot;&lt;br /&gt;
    Call Func3&lt;br /&gt;
    Debug.Print &amp;quot;I am still in Func2&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
Sub Func3()&lt;br /&gt;
    Dim sngAnswer As Single&lt;br /&gt;
    Debug.Print &amp;quot;I am in Func3&amp;quot;&lt;br /&gt;
    sngAnswer = 5 / 0&lt;br /&gt;
    Debug.Print &amp;quot;I am still in Func3&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Placing a Resume Next Statement in Your Error Handler==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub TestResumeNextInError()&lt;br /&gt;
    On Error GoTo TestResumeNextInError_Err&lt;br /&gt;
    Kill &amp;quot;AnyFile&amp;quot;&lt;br /&gt;
    If Err.number = 0 Then&lt;br /&gt;
    Else&lt;br /&gt;
        msgBox &amp;quot;We Didn&amp;quot;t Die, But the Error Was: &amp;quot; &amp;amp; Err.Description&lt;br /&gt;
    End If&lt;br /&gt;
    Exit Sub&lt;br /&gt;
TestResumeNextInError_Err:&lt;br /&gt;
    Resume Next&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Read user choice when dealing with error==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Public Sub ErrorTrap1()&lt;br /&gt;
  Dim Answer As Long, MyFile As String&lt;br /&gt;
  Dim Message As String, CurrentPath As String&lt;br /&gt;
  &lt;br /&gt;
  On Error GoTo errTrap&lt;br /&gt;
  CurrentPath = CurDir$&lt;br /&gt;
  &lt;br /&gt;
  ChDrive &amp;quot;A&amp;quot;&lt;br /&gt;
  ChDrive CurrentPath&lt;br /&gt;
  ChDir CurrentPath&lt;br /&gt;
  MyFile = &amp;quot;A:\Data.xls&amp;quot;&lt;br /&gt;
  Application.DisplayAlerts = False&lt;br /&gt;
  ActiveWorkbook.SaveAs Filename:=MyFile&lt;br /&gt;
TidyUp:&lt;br /&gt;
  ChDrive CurrentPath&lt;br /&gt;
  ChDir CurrentPath&lt;br /&gt;
Exit Sub&lt;br /&gt;
errTrap:&lt;br /&gt;
  Message = &amp;quot;Error No: = &amp;quot; &amp;amp; Err.Number &amp;amp; vbCr&lt;br /&gt;
  Message = Message &amp;amp; Err.Description &amp;amp; vbCr &amp;amp; vbCr&lt;br /&gt;
  Message = Message &amp;amp; &amp;quot;Please place a disk in the A: drive&amp;quot; &amp;amp; vbCr&lt;br /&gt;
  Message = Message &amp;amp; &amp;quot;and press OK&amp;quot; &amp;amp; vbCr &amp;amp; vbCr&lt;br /&gt;
  Message = Message &amp;amp; &amp;quot;Or press Cancel to abort File Save&amp;quot;&lt;br /&gt;
  Answer = MsgBox(Message, vbQuestion + vbOKCancel, &amp;quot;Error&amp;quot;)&lt;br /&gt;
  If Answer = vbCancel Then Resume TidyUp&lt;br /&gt;
  Resume&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using Resume Conditionally Based on User Feedback==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Function GoodResume()&lt;br /&gt;
    On Error GoTo GoodResume_Err&lt;br /&gt;
    Dim strFile As String&lt;br /&gt;
    strFile = Dir(strFileName)&lt;br /&gt;
    If strFile = &amp;quot;&amp;quot; Then&lt;br /&gt;
      GoodResume = False&lt;br /&gt;
    Else&lt;br /&gt;
      GoodResume = True&lt;br /&gt;
    End If&lt;br /&gt;
    Exit Function&lt;br /&gt;
GoodResume_Err:&lt;br /&gt;
    Dim intAnswer As Integer&lt;br /&gt;
    intAnswer = MsgBox(Error &amp;amp; &amp;quot;, Would You Like to Try Again?&amp;quot;, vbYesNo)&lt;br /&gt;
    If intAnswer = vbYes Then&lt;br /&gt;
        Resume&lt;br /&gt;
    Else&lt;br /&gt;
        Exit Function&lt;br /&gt;
    End If&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using the Resume &amp;lt;LineLabel&amp;gt; Statement to Specify Where Execution Continues After an Error Occurs==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub TestResumeLineLabel()&lt;br /&gt;
    On Error GoTo TestResumeLineLabel_Err&lt;br /&gt;
    Dim sngResult As Single&lt;br /&gt;
    sngResult = 1 / 0&lt;br /&gt;
TestResumeLineLabel_Exit:&lt;br /&gt;
    Exit Sub&lt;br /&gt;
TestResumeLineLabel_Err:&lt;br /&gt;
    msgBox &amp;quot;Error #&amp;quot; &amp;amp; Err.number &amp;amp; &amp;quot;: &amp;quot; &amp;amp; Err.Description&lt;br /&gt;
    Resume TestResumeLineLabel_Exit&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>