Excel VBA質問箱 IV

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

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


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

【29345】特定のシート以外を全て非表示にしたい NK 05/10/2(日) 0:22 質問[未読]
【29346】Re:特定のシート以外を全て非表示にしたい かみちゃん 05/10/2(日) 0:31 回答[未読]
【29347】Re:特定のシート以外を全て非表示にしたい NK 05/10/2(日) 0:38 質問[未読]
【29348】Re:特定のシート以外を全て非表示にしたい かみちゃん 05/10/2(日) 0:52 回答[未読]
【29350】Re:特定のシート以外を全て非表示にしたい NK 05/10/2(日) 1:03 お礼[未読]

【29345】特定のシート以外を全て非表示にしたい
質問  NK  - 05/10/2(日) 0:22 -

引用なし
パスワード
   いつも参考にさせて頂いております。
ある特定のシートを除き、他のシートは全て非表示にする、という処理を
組みたいのですが
  For Each s In Worksheets
    With s
      s.Visible = False
    End With
  Next
  Sheets(1).Visible = True
だと最後のシートを非表示にする際にエラーになってしまいます。
残すシートは上記の通り1つだけです。
ワークシートは増える予定なのでFor Each関数を使いたいのですが・・・
なにか良い方法はないでしょうか?よろしくお願いします。

【29346】Re:特定のシート以外を全て非表示にしたい
回答  かみちゃん  - 05/10/2(日) 0:31 -

引用なし
パスワード
   >ある特定のシートを除き、他のシートは全て非表示にする、という処理を
>組みたいのですが
>  For Each s In Worksheets
>    With s
>      s.Visible = False
>    End With
>  Next

ここまでのコードだと、すべて非表示になります。
すべて非表示にしてから、
 Sheets(1).Visible = True
で再表示しようとしても、できません。

そこで、「表示しておきたいシート名」以外は、すべて非表示にするという方法
で対応すればいいかと思います。
具体的には、次のようなコードでできます。
 For Each s In Worksheets
  With s
   If .Name <> Sheets(1).Name Then
    .Visible = False
   End If
  End With
 Next
とすればいいかと思います。

【29347】Re:特定のシート以外を全て非表示にしたい
質問  NK  - 05/10/2(日) 0:38 -

引用なし
パスワード
   早速の御返答、ありがとうございました。
まさにやりたかった事がそれでしたが
コードが思いつかなかったので・・・
ありがとうございました。

ついでにもう1つお聞きしたいのですが
非表示にしたくないシートが複数に増えた場合は
配列にでもシート名を持たせれば良いでしょうか?

【29348】Re:特定のシート以外を全て非表示にしたい
回答  かみちゃん  - 05/10/2(日) 0:52 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>非表示にしたくないシートが複数に増えた場合は
>配列にでもシート名を持たせれば良いでしょうか?

以下のような感じでできると思います。

Sub Macro1()
 Dim i As Integer
 Dim strSheet As Variant
 Dim s As Worksheet
 Dim VisibleSheetCk As Boolean
 
 '表示対象シートを記述
 strSheet = Array("Sheet2", "Sheet3")
 
 '全シートの表示・非表示切替
 For Each s In Worksheets
  With s
   VisibleSheetCk = False
   '配列内部をチェック
   For i = 0 To UBound(strSheet)
    If .Name = Sheets(strSheet(i)).Name Then
     VisibleSheetCk = True
     Exit For
    End If
   Next
   .Visible = VisibleSheetCk
  End With
 Next
End Sub

【29350】Re:特定のシート以外を全て非表示にしたい
お礼  NK  - 05/10/2(日) 1:03 -

引用なし
パスワード
   できました!
流用させて頂きます。
こんな時間に早い回答を頂き、本当に助かりました。
ありがとうございました。
また何かありましたらよろしくお願い致します。

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