マクロがあり、コードの一部が次のものに関係しています。 1)空のセルが含まれているかどうかを検出する - ある場合は値を入力してください 2)エラーが含まれているセル(N/Aなど)が含まれている場合には、値を入力してください。VBAコード実行中にエラー処理メソッドを変更する
列にエラー/空白セルがない場合、それらを検出する行に「実行時エラー1004細胞が見つかった」と述べた。
エラー処理を使用してGoToでこれをスキップします。
以下はコードです - 最初のエラー処理GoToは完全に動作しますが、2番目のエラー処理ではエラー処理が行われますが、動作していないようです。コメント付きコード:
On Error GoTo EErrorOne
'depending on file I get, below line will generate error and code successfully skips to ErrorOne label
Workbooks(nazwawb).Sheets(szitnr).Columns(ktorepole).SpecialCells (xlCellTypeBlanks)
' code to be skipped
Workbooks(nazwawb).Sheets(szitnr).Columns(ktorepole).Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.Value = "Some Value"
' end of code to be skipped
EErrorOne:
' successfully skipped error line by now. Below line should set a new Error handling procedure.
On Error GoTo EErrorTwo
Workbooks(nazwawb).Sheets(szitnr).Columns(ktorepole).Select
' Below line generates an error but does not skip to EErrorTwo label as detailed in the current Error handling procedure
Selection.SpecialCells(xlCellTypeFormulas, 16).Select
' code to be skipped
Selection.SpecialCells(xlCellTypeFormulas, 16).Select
Selection.Value = "Some Value"
' end of code to be skipped
EErrorTwo:
' Below line should reset error handling procedure to normal for subsequent handling of other errors:
On Error GoTo 0
それは、そのエラー処理手順(後藤特定のラベル)ようだが無視され、代わりに、エラーメッセージがエラー処理は、私は2番目をスキップするにはどうすればよい後藤0にリセットされたかのように示されていますエラー?
エラーハンドラに依存しないコードを作成する方がよいでしょう。代わりに、エラーの原因となっている状態を確認して、エラーが発生することがわかっているコードをスキップします。 – braX
あなたのコードはあまりにも多くのことをしています。プロシージャごとに1つのハンドラ。エラーを処理する際に新しいエラーを処理することはできません。最初に最初のエラーを処理する*必要があります。 'On Error'はエラーハンドラの中では役に立たない*あなたは既にエラー状態になっています*、どうなるでしょうか? FWIWはすぐに[Rubberduck](http://rubberduckvba.com)の検査になります。 –
braX、私は範囲に関係するセルを割り当てようとしましたが、rangenameが何もない場合に設定しましたが、それでもエラーメッセージに評価されました。マットのマグ、私はこれの専門家ではない、私は新たに開始する前にエラー処理を終了する必要があると思っていたが、私はOn Error GoTo 0がエラー処理をリセットすると思った - それはOn Error GoTo -1、私の質問に対する受け入れられた答えに指摘されているように。とにかく私はどこでエラー処理をリセットしませんでしたが、これは私の問題の解決策です。すべてありがとうございました – FilipB