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 を書かないと、正しく処理されたときに、正しく処理されたメッセージとエラーメッセージの両方が出てしまうので必ず書くようにしてください。



コメント
コメントを投稿