Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 : Excel 2013)
エラー処理
投稿日時: 19/08/20 12:49:13
投稿者: rinahana

いつもお世話になっています。
ある会(800人程度)の過去から現在までの役員が記載されているエクセルデータが見つかり
現在の名簿に人名と同じ人の行にその人の役を書き込むコードを作成しました。が亡くなっている
 
人名や人名が変更している人のデータはエラーがでて止まってしまします。
そこでネットを調べて、「On Error Resume Next」にOn Error文を変更しました。
上手く最後まで処理が行われましたが、どこでエラー(名前がないデータ)があったか?
誰なのか?を知りたいのですが、「On Error Resume Next」にどのようなコードを付け加えればいいのか
教えてもらえませんか。始めは「On Error GoTo ERR_shori」としましたがエラーの都度 処理が止まり
大変な思いをしました。ので・・・
 
For i = 2 To MaxRow
     namae1 = Cells(i, 列2).Value: yaku2 = Cells(i, 列3).Value
     On Error Resume Next
   ' On Error GoTo ERR_shori
    j = WorksheetFunction.Match(namae1, Range("C2:C810"), 0)
    Cells(j + 1, 列1) = Cells(j + 1, 列1) & " " & yaku2 & ","
Next i

 
追加説明:namae1は過去の役員名、Range("C2:C810")に現在の構成員名
が記述されています。見つけた名前の行にその役を書き込んでいく。
役は何年か分あるので、一人1つとは限らないので、& で繋げていくことにしました。
何か少しでも教えてください。何行目にエラーが、誰のところにエラーが
処理が止まらずに幾つのエラーがあったかなど  分かればうれしいです。

回答
投稿日時: 19/08/20 13:25:23
投稿者: めんたん

なるべくOn Error Resume Nextを使わずに
 
Dim buf As Variant
 
buf = Application.Match(namae1, Range("C2:C810"), 0)
 
If IsError(buf) Then
    MsgBox "エラー時の処理"
Else
    MsgBox "エラーじゃないときの処理"
End If
 
このようにエラーかどうか戻り値で処理を分けるといいと思いますよ。

投稿日時: 19/08/20 14:34:29
投稿者: rinahana

めんたんさん有難うございます。
早速 やってみます。

投稿日時: 19/08/20 15:24:16
投稿者: rinahana

めんたんさん有難うございます。
どうにか 思っている処理が出来ました。
有難うございます。