Excel VBA質問箱 IV

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

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


6880 / 13644 ツリー ←次へ | 前へ→

【42566】特定のシート(複数)を残して削除する方法 とく 06/9/15(金) 11:18 質問[未読]
【42572】Re:特定のシート(複数)を残して削除する... ひげくま 06/9/15(金) 11:44 回答[未読]
【42575】Re:特定のシート(複数)を残して削除する... とく 06/9/15(金) 12:00 お礼[未読]
【42574】Re:特定のシート(複数)を残して削除する... Kein 06/9/15(金) 11:56 回答[未読]
【42580】Re:特定のシート(複数)を残して削除する... とく 06/9/15(金) 14:33 お礼[未読]

【42566】特定のシート(複数)を残して削除する方...
質問  とく  - 06/9/15(金) 11:18 -

引用なし
パスワード
   初心者です。
宜しくお願いします。

常に複数のシートだけにしておきたい
場合はどのように書けば宜しいでしょうか?

1枚の場合は以下のコードで実行できましたが
複数の場合、例えば3枚(test2、test3も残したい)
などの場合はどのように書けば良いですか?
いろいろ試してみましたが、うまくいきません、、

WinXP Excel2003です。

Sub 常にシートは1枚にする()
  Dim mysh As Object
  For Each mysh In Sheets
    If mysh.Name <> "test1" Then mysh.Delete
  Next
End Sub

【42572】Re:特定のシート(複数)を残して削除す...
回答  ひげくま  - 06/9/15(金) 11:44 -

引用なし
パスワード
   ▼とく さん:
>初心者です。
>宜しくお願いします。

こんにちは。

>複数の場合、例えば3枚(test2、test3も残したい)

>Sub 常にシートは1枚にする()
>  Dim mysh As Object
>  For Each mysh In Sheets
>    If mysh.Name <> "test1" Then mysh.Delete
>  Next
>End Sub

If mysh.Name <> "test1" Then mysh.Delete

これを、

If mysh.Name <> "test1" And mysh.Name <> "test2" And mysh.Name <> "test3" Then mysh.Delete

とするだけで大丈夫だと思います。

【42574】Re:特定のシート(複数)を残して削除す...
回答  Kein  - 06/9/15(金) 11:56 -

引用なし
パスワード
   Select Case 構文を使うと、こんな感じです。

Sub 常にシートは1枚にする()
  Dim mysh As Worksheet

  For Each mysh In Sheets
    Select Case mysh.Name
     Case "test1", "test2", "test3"
     Case Else: mysh.Delete
    End Select
  Next
End Sub

【42575】Re:特定のシート(複数)を残して削除す...
お礼  とく  - 06/9/15(金) 12:00 -

引用なし
パスワード
   ▼ひげくま さん:

ありがとうございます!!!

ずっと悩んでいたことが、すーっと解消されました。
大変感謝します。

今後ともよろしくおねがいします<m(__)m>


>▼とく さん:
>>初心者です。
>>宜しくお願いします。
>
>こんにちは。
>
>>複数の場合、例えば3枚(test2、test3も残したい)
>
>>Sub 常にシートは1枚にする()
>>  Dim mysh As Object
>>  For Each mysh In Sheets
>>    If mysh.Name <> "test1" Then mysh.Delete
>>  Next
>>End Sub
>
>If mysh.Name <> "test1" Then mysh.Delete
>
>これを、
>
>If mysh.Name <> "test1" And mysh.Name <> "test2" And mysh.Name <> "test3" Then mysh.Delete
>
>とするだけで大丈夫だと思います。

【42580】Re:特定のシート(複数)を残して削除す...
お礼  とく  - 06/9/15(金) 14:33 -

引用なし
パスワード
   ▼Kein さん:

残したいシートが8枚あるので、IFを使うより簡潔な構文に
なり大変助かりました。

ありがとうございました。

今後とも宜しくお願いします<m(__)m>

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