
VBAのエラー処理の方法について教えて下さい。
エクセル2007を使用しています。
VBAでシートの名前を以下のように変更しようとしています。
シート名1 ← "1"
シート名2 ← "2"
シート名3 ← "3"
記述内容は以下の通りです。
'〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
On Error GoTo Err1
For i = 1 to 3
Sheet(i).Name = 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は処理を無視するだけなので使用したくありません。
以上、宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
>尚、On Error Resume Nextは処理を無視するだけなので・・・
あえて使ってみました、如何ですか?
On Error Resume Next
For i = 3 To 1 Step -1
Sheets(i).Name = i 'Sheet(i)の名前を変数"i"に変更する。
If Err Then
Application.DisplayAlerts = False
Sheets(i).Delete
Err.Clear
End If
Next i
Application.DisplayAlerts = True
On Error GoTo 0
No.2
- 回答日時:
こんばんは。
コードの基本的な間違いはともかくとして、エラーが発生したら、シートを削除するという考え方が分かりません。本当に削除してしまってよいのでしょうか?
もし、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は処理を無視するだけなので使用したくありません。
別にあえて使う必要はありませんが、処理を無視すると解釈しているなら、それだけではありませんから、あまり注文をつけないほうがよいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シートベルトの固定解除
-
エクセルで複数のシートをフォ...
-
原付 レッツシート開け方
-
Excel複数シートから日付と文字...
-
括弧があるとHYPERLINKで飛べな...
-
ポップコーンの捨て方
-
フォルツァ バッテリーを外して...
-
エクセルVBA 4行飛ばしで転記す...
-
EXCEL VBA 複数のシートに同じ...
-
ドライブレコーダーのSDカード...
-
Excelでポイントの管理表を作成...
-
液晶テレビの保護シートの上手...
-
灰皿の下に敷く敷物を探してい...
-
車のシートでおもらし
-
IHクッキングヒーターの操作パ...
-
建築模型、カーブの作り方
-
【マクロ】シートの変数へ入れ...
-
磁石のくっつくパネルを作りた...
-
Vba Array関数について教えてく...
-
バイクのシートがベタベタする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
括弧があるとHYPERLINKで飛べな...
-
IHクッキングヒーターの操作パ...
-
フォルツァ バッテリーを外して...
-
エクセルVBA 4行飛ばしで転記す...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
【マクロ】シートの変数へ入れ...
-
Vba Array関数について教えてく...
-
原付 レッツシート開け方
-
BRIDEのシート張り替えってでき...
-
ポップコーンの捨て方
-
建築模型、カーブの作り方
-
水の染み込んだバイクのシート...
-
XR250BAJAのシートのはずし方を...
-
癒着してしまったテレビの液晶...
-
カッティングシートの上からア...
-
プリメーラ(P10)の"Tm""Te""...
-
PowerQuery(パワークエリ)のエ...
-
マジェスティ(4HC)のシート下...
おすすめ情報