VBA/Excel/Access/Word/Language Basics/Resume

Материал из VB Эксперт
Перейти к: навигация, поиск

Check the error number with Select Case statement

   <source lang="vb">

Sub SelectionSqrt()

   Dim cell As range
   Dim ErrMsg As String
   If TypeName(Selection) <> "Range" Then Exit Sub
   On Error GoTo ErrorHandler
   For Each cell In Selection
       cell.value = Sqr(cell.value)
   Next cell
   Exit Sub

ErrorHandler:

   Select Case Err
       Case 5 "Negative number
           Resume Next
       Case 13 "Type mismatch
           Resume Next
       Case 1004 "Locked cell, protected sheet
           MsgBox "The cell is locked. Try again."
           Exit Sub
       Case Else
           ErrMsg = Error(Err.number)
           MsgBox "ERROR: " & ErrMsg
           Exit Sub
   End Select

End Sub

</source>
   
  


Uses a Resume statement after an error occurs:

   <source lang="vb">

Sub EnterSquareRoot6()

   Dim Num As Variant
   Dim Msg As String
   Dim Ans As Integer

TryAgain:

   On Error GoTo BadEntry
   Num = InputBox("Enter a value")
   If Num = "" Then Exit Sub
   ActiveCell.value = Sqr(Num)
   Exit Sub

BadEntry:

   Msg = "An error occurred. Try again?"
   Ans = MsgBox(Msg, vbYesNo)
   If Ans = vbYes Then Resume TryAgain

End Sub

</source>
   
  


using the On Error Resume Next statement

   <source lang="vb">

Sub SelectionSqrt()

   Dim cell As range
   If TypeName(Selection) <> "Range" Then Exit Sub
   On Error Resume Next
   For Each cell In Selection
       cell.value = Sqr(cell.value)
   Next cell

End Sub

</source>