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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) 【VBAで、On Error が効かない】 3 2022/06/09 10:08
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
括弧があるとHYPERLINKで飛べな...
-
電車のシートって何でこんな暑...
-
エクセルで複数のシートをフォ...
-
フォルツァ バッテリーを外して...
-
原付 レッツシート開け方
-
水の染み込んだバイクのシート...
-
バイクのシートを取り替えても...
-
ホワイトボードの復活
-
メルセデスベンツ
-
ポケットにミシンでワッペンを...
-
エクセルVBA:他シートを選択す...
-
エクセルVBA 4行飛ばしで転記す...
-
BRIDEのシート張り替えってでき...
-
Excelで、別シートの表のステー...
-
車内ビショビショ・・・
-
BIKEのシートの取り外し方を教...
-
シートベルトの固定解除
-
Excel複数シートから日付と文字...
-
EXCEL VBA 複数のシートに同じ...
-
ポップコーンの捨て方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数のシートをフォ...
-
電車のシートって何でこんな暑...
-
括弧があるとHYPERLINKで飛べな...
-
BRIDEのシート張り替えってでき...
-
自分はGSX-S125に乗ってますが...
-
シートベルトの固定解除
-
リアシート無しで運転してたら...
-
原付 レッツシート開け方
-
エクセルVBA 4行飛ばしで転記す...
-
車のシートでおもらし
-
ポップコーンの捨て方
-
癒着してしまったテレビの液晶...
-
メルセデスベンツ
-
車のシートがへたってきました...
-
フォルツァ バッテリーを外して...
-
建築模型、カーブの作り方
-
ホワイトボードの復活
-
Excel VBA シート名変更時、重...
-
ドライブレコーダーのSDカード...
-
カッティングシートの上からア...
おすすめ情報