• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:以下のコードですと、アクティブシート以外全て隠してしまいますが、)

VBAコードでアクティブシート以外を非表示にする方法

このQ&Aのポイント
  • VBAコードを使用して、アクティブシート以外のシートを非表示にする方法を教えてください。
  • 上記のVBAコードでは、アクティブシート以外のシートを非表示にしていますが、他の選択されているシートを非表示にするにはどのように変更すればよいでしょうか。
  • シートの非表示に関するVBAコードの書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

一例です。 セレクトされているシート群にあるかどうかチェックして、なかったら非表示。 '------------------------------- Sub test()  Dim Flag As Boolean  Dim N As Worksheet  Dim S As Worksheet  For Each N In Worksheets    Flag = False    For Each S In ActiveWindow.SelectedSheets      If N.Name = S.Name Then        Flag = True        Exit For        End If    Next S    If Flag = False Then       N.Visible = xlVeryHidden    End If  Next N End Sub '------------------------------------- 以上です。

rosese
質問者

お礼

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

その他の回答 (2)

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.3

他の方の回答の方が良いと思うのですが、ご参考まで。 Sub Test() Dim mstr As String Dim i As Integer For i = 1 To Worksheets.Count mstr = "No" For Each sh In ActiveWindow.SelectedSheets If Worksheets(i).Name = sh.Name Then mstr = "Yes" Exit For End If Next sh If mstr = "No" Then Worksheets(i).Visible = xlVeryHidden End If Next i End Sub

rosese
質問者

お礼

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

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

str(0)って何入れてますか? 選択されたシートは,例えばwindow配下のselectedsheetsで取得できますから。。。と思ってこねてみたら,何だか妙にまどろっこしいのになってしまいました。 ご自分のアイデアでも,工夫してみてください。 option base 0 Sub macro1()  Dim a(), s, i, x, si  ReDim a(Worksheets.Count - 1)  For i = 1 To Worksheets.Count   a(i - 1) = Worksheets(i).Name  Next  x = a  For Each s In ActiveWindow.SelectedSheets   x = Filter(x, s.Name, False)  Next  For Each si In x   Worksheets(si).Visible = xlVeryHidden  Next End Sub

rosese
質問者

お礼

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