質問: i 'sheet(i)の名前を変数"i"に変更する。 err1: sheet(i).delete '上記処理でエラーが発生した場合はそのシートを削除する。 next i '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上の処理を実行しようとした場合、同じ名前の既存シートが存在していたり、シート名に含まれてはいけない文字列が含まれていたりした場合、エラーが発生しますが、on errorステートメントを使用してエラーが発生した場合の処理を実行したいのですが、1回目のエラーについてはon errorが働くのですが、2回目になるとon errorが働きません。 2回目以降のエラーも1回目と同様に処理したいのですが、コードの記述の変更方法や又は他の処理方法を教えて下さい。 エラーの種類は以下の通りです。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 実行時エラー'1004': シートの名前をほかのシート、visual basicで参照されるオブジェクト ライブラリまたは ワークシートを同じ名前に変更することはできません。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上。 尚、on error resume nextは処理を無視するだけなので使用したくありません。 以上、宜しくお願い致します。
回答: こんばんは。 コードの基本的な間違いはともかくとして、エラーが発生したら、シートを削除するという考え方が分かりません。本当に削除してしまってよいのでしょうか? もし、6,5,4,3,2,1 としたら、シート名の6から4までが、エラーが発生してしまいますから、その3つを削除するのですか?また、左から、1,2,6,4,5,3 となっていたら、シート名の6を削除するのですか? index にシート名をあわせることは問題ないにしても、それで削除してしまうのは、特別な理由があるのでしょうか?データが入っていたりすることもあるはずですが。 並べ替えるか、シート名を左から順に1,2,3,4,5,6にすればよいと思いますが、それは考えなかったのでしょうか? >on error resume nextは処理を無視するだけなので使用したくありません。 別にあえて使う必要はありませんが、処理を無視すると解釈しているなら、それだけではありませんから、あまり注文をつけないほうがよいと思います。