Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5218 / 13645 ツリー ←次へ | 前へ→

【52039】インデックスが有効範囲にありません。 osanpo 07/10/17(水) 13:21 質問[未読]
【52040】Re:インデックスが有効範囲にありません。 Jaka 07/10/17(水) 13:35 発言[未読]
【52042】Re:インデックスが有効範囲にありません。 Blue 07/10/17(水) 13:39 発言[未読]
【52045】Re:インデックスが有効範囲にありません。 Jaka 07/10/17(水) 16:26 発言[未読]
【52041】Re:インデックスが有効範囲にありません。 Blue 07/10/17(水) 13:38 回答[未読]
【52059】Re:インデックスが有効範囲にありません。 osanpo 07/10/18(木) 13:18 お礼[未読]

【52039】インデックスが有効範囲にありません。
質問  osanpo  - 07/10/17(水) 13:21 -

引用なし
パスワード
   こんにちは。

下記のように特定の文字が含まれるシートを削除するマクロを組んだのですが、
『インデックスが有効範囲にありません。』
と言われます。
うまくいくときもあるのですが、どこがいけないのでしょうか?
ご教授お願いします。

Sub test()
Dim wsc As Long
Dim i As Long
 wsc = Worksheets.Count
  For i = 1 To wsc
  If Worksheets(i).Name Like "test*" Then
    Application.DisplayAlerts = False
    Worksheets(i).Delete
    Application.DisplayAlerts = True
  End If
  Next i
 
End Sub

【52040】Re:インデックスが有効範囲にありません。
発言  Jaka  - 07/10/17(水) 13:35 -

引用なし
パスワード
   sheet1 sheet2  sheet3  sheet4  sheet5

sheet1を削除すると、
sheet2  sheet3  sheet4  sheet5
こうなります。

最初のシート数が5枚ですから、提示されたコードだと、
5枚目が無いのにシート名を比較してます。
5枚目のシートが無いのにシート名なんて解るはず無いですよね。
それが原因です。
で対策、セルの削除と同じく後ろから行う。

他、
For Each Ws In Worksheets
  If Ws.Name Like "あああ*" Then
   Ws.Delete
  End If
Next

【52041】Re:インデックスが有効範囲にありません。
回答  Blue  - 07/10/17(水) 13:38 -

引用なし
パスワード
   ワークシートを削除するとインデックスがずれてしまうのでは?
後ろから消すように変更するとうまくいくでしょう。

>For i = 1 To wsc

For i = wsc To 1 Step - 1

【52042】Re:インデックスが有効範囲にありません。
発言  Blue  - 07/10/17(水) 13:39 -

引用なし
パスワード
   どこかでFor Each内でリストの数を変えるのはまずいということを聞いたことがあります。

【52045】Re:インデックスが有効範囲にありません。
発言  Jaka  - 07/10/17(水) 16:26 -

引用なし
パスワード
   ▼Blue さん:
>どこかでFor Each内でリストの数を変えるのはまずいということを聞いたことがあります。
あ、やっぱり。
普段は、名前を配列に入れたり、ケツから指定してますけど、
こういうのが出来るので、なんとなく手抜きで書いてしまいました。

Sub dklld()
Dim Ws As Worksheet
For Each Ws In Worksheets
  Ws.Move after:=Sheets(Worksheets.Count)
Next
End Sub

それと、セル等の場合は、こうは書きません。
出来ないの知っているから。

【52059】Re:インデックスが有効範囲にありません。
お礼  osanpo  - 07/10/18(木) 13:18 -

引用なし
パスワード
   jaka様 Blue様

そういう理由だったんですね。
無事動きました。
有難うございました。

5218 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free