|
▼ゼロイオン さん:
>for x = 1 to シート数
>on error resume next
>行 = Worksheets(1).Cells.Find("シート名", , xlValues, , , xlPrevious).Row
>on error goto 0
>
>Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 時間 '時間
>Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 野菜値段 * 魚値段 '金額
>Workbooks("ブック.xls").Worksheets(2).Cells(行, 256).End(xlToLeft).Offset(, 1).Value = 持ち金 - 購入金額 'おつり
>
>next x
>
>あらたに問題が発生しました。
>on errorをやったあとに下のコードを実行しています。
>しかし、このコードforで繰り返しているのですが
>これを実行すると行に入る値がエラーの場合、回避できるところまでいいのですが、
>エラーになる前に割り出した行の値が残っているので
>on error goto 0
>から下のコードを実行して、同じ行の後ろに割り出してしまうので
>間違った結果になってしまいます。
>
>そこでエラーが出た場合、on error goto 0から下のコードを
>ぶっ飛ばして次のforのstepにいくにはどうしたいいのでしょうか?
>ちなにみ、要点以外他の部分は割愛させてもらってます
On Error Resume Next と
On Error Goto 0
の意味を理解して使われていますか?
On Error Resume Nextは、エラーが発生しても無視して次の行に行っちゃいなさいって意味。
On Error Goto 0は、On Error Resume Nextで無視したことを解除しなさい。って意味。
だから、エラーが発生しても無視して次の行にいきたいのなら、On Error Goto 0を生かしておけばいいわけですよね。
On Error Resume Nextを消すか、Next xの前に書けばいいと思いますが。
|
|