Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


50575 / 76732 ←次へ | 前へ→

【31042】Re:Excel2003 VBAにおけるエラー回避
回答  でれすけ  - 05/11/9(水) 20:42 -

引用なし
パスワード
   こんばんは。

最近、他の場所でおなじようなことを書きました。

  注意しなくてはならないことは、

   On Erorr Gotoはエラー発生時にエラー処理ルーチンに
   処理をジャンプさせるものであることと、

   On Erorr Goto でジャンプした先(エラー処理ルーチン)では、
   エラー処理が有効にならないことです。

   エラー処理部でのエラーはトラップできません。

   エラー処理ルーチンの終了後に、実行を再開するには、
   Resume ステートメントを使わなくてはなりません。

まとめると、
 
 On Error Goto でジャンプすると、エラー処理部の中にいることになり、
 Resumeステートメントでエラー処理部から戻るまで、
 エラートラップが有効に成らない。
 (エラートラップの無限ループに陥らないための配慮と思って下さい。)

簡単になおすと、以下。

Sub Test()

On Error GoTo Err_Handeler1
  Sheets("A").Select
  Range("B11").Select
  Selection.Copy
  Range("E1").Select
  Sheets("X").Select
  Range("F8").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Skip01:
  On Error GoTo Err_Handeler2
  Sheets("B").Select
  Range("B11").Select
  Application.CutCopyMode = False
  Selection.Copy
  Range("E1").Select
  Sheets("X").Select
  Range("G8").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Skip02:
  On Error GoTo Err_Handeler3
  Sheets("C").Select
  Range("B11").Select
  Application.CutCopyMode = False
  Selection.Copy
  Range("E1").Select
  Sheets("X").Select
  Range("H8").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Skip03:

  On Error GoTo 0
  
  Exit Sub

Err_Handeler1:
 Resume Skip01

Err_Handeler2:
 Resume Skip02

Err_Handeler3:
 Resume Skip03

End Sub


もうちょっと短くすると以下。

Sub Test2()

Dim ShList As Variant
ShList = Array("A", "B", "C")

For i = 0 To 2
 On Error GoTo Err_Handler
  Sheets(ShList(i)).Range("B11").Copy
 On Error GoTo 0
 Sheets("X").Cells(8, i + 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
skip:
Next

Exit Sub

Err_Handler:
 Resume skip
 
End Sub

1 hits

【31036】Excel2003 VBAにおけるエラー回避 Maybe 05/11/9(水) 16:58 質問
【31038】Re:Excel2003 VBAにおけるエラー回避 Jaka 05/11/9(水) 17:21 回答
【31041】Re:Excel2003 VBAにおけるエラー回避 Hirofumi 05/11/9(水) 20:39 回答
【31042】Re:Excel2003 VBAにおけるエラー回避 でれすけ 05/11/9(水) 20:42 回答

50575 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free