電子書籍の厳選無料作品が豊富!

いつもお世話になっています。VBAの初心者です。

さて、現在エクセルVBAで「メニューのシート」の左側に作業ファイルを作成しています。この作業ファイルをすべて削除するVBAを作成したところ、最初の数枚は順調に削除しているのですが途中で突然「メニューのシート」が削除されてしまいます。

メッセージボックスなどをいれていろいろ調べてみましたが、Worksheets("メニュー").Indexは正しい数字が表示されますし、ループの「i」も正しく表示されています。なのに途中で消去しなければならないファイルを飛び越して「メニューのシート」が削除されてしまいます。

私の作成したソースは下記のとおりです。ご教示いただきたくよろしくお願いします。

Sub 作業ファイルの消去()

Dim i As Integer
Dim J As Integer
J = Worksheets("メニュー").Index
J = J - 1

Application.DisplayAlerts = False
For i = 1 To J Step 1
Worksheets(i).Delete
Next
Application.DisplayAlerts = True

End Sub

A 回答 (1件)

Worksheets(i).Delete


 ↓
Worksheets(1).Delete

削除するたびにIndexは左から振られると思うので、常に一番左を削除し続ければよいのではないでしょうか。
    • good
    • 0
この回答へのお礼

早速のご教示ありがとうございました。
あ! そうですね、

普通に考えたらわかりそうなものなのに、変数にしなければならないと思い込んでいました。
ありがとうございました。

お礼日時:2018/12/18 13:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!