Visual Basic For Applications Tips


プロシジャ実行中に割り込み


プロシジャで処理をしている最中にESCを押下すると、デフォルトで下のような画面が出力されます。この画面を出力させずにプロシジャ内でエラーを処理したい場合、EnableCancelKeyを使用します。

Sub ErrorHandlerTest()
  
Dim ret As Integer

  
On Error GoTo ErrorHandler

  Application.EnableCancelKey = xlErrorHandler
'実行中のプロシージャにエラーを返却します。
   
  ・
   適宜処理
     ・

  
Exit Sub
ErrorHandler:
  
Select Case Err
   
Case 18 'ESCキー押下
    ret = MsgBox("中断されました。続行しますか?", vbYesNo, ThisWorkbook.Name)
    
If ret = vbYes Then
      
Resume
    
Else
      
Exit Sub
    
End If
   
Case Else
    ret = MsgBox("<" & Err & ">" & Error(Err), vbOK, ThisWorkbook.Name)
    
Exit Sub
  
End Select
End Sub