VBA記事12.エラー回避





前述のMatchで何某かの値が取得できないとエラーになります。

上記の図のケースだと「備考」の文字がないためエラーになってしまっています。


これは2通りのエラー回避方法で回避できます。



**************************************

Sub sample11_1()

Dim x As Long

On Error Resume Next

X = Aplicatin.WorksheetFunction.Match(“備考”, Rows(1), False)

Range(Cells(1,x) , Cells(1, x + 3)).EntireColum.Delete

End sub

**************************************


エラーの原因となる行の上にOn Error Resume Next と書くことでエラー画面を出すことなく処理させる子が可能ですが、情報量が多いExcelのファイルだとうまく処理できたかわからなくなる時があります。


このため、エラーの時にメッセージが出るように下記のようにラベル処理を併用します。





**************************************

Sub sample11_1()

Dim x As Long

On Error GoTo Laber001

X = Aplicatin.WorksheetFunction.Match(“備考”, Rows(1), False)

Range(Cells(1,x) , Cells(1, x + 3)).EntireColum.Delete

MsgBox “備考から右3列を削除しました”

Exit Sub

Label001:

MsgBox “備考が見つかりませんでした”

End sub

**************************************


まずは正しく処理されたときに、その旨を伝えるメッセージが出るようにします。


つぎにエラーの時はラベル001に移動するようにします。

そうすることでエラー表示が現れず、代わりに処理が何らかの理由で処理されなかったメッセージが出るようにしています。


また Exit Sub を書かないと、正しく処理されたときに、正しく処理されたメッセージとエラーメッセージの両方が出てしまうので必ず書くようにしてください。


コメント