- ベストアンサー
VBAコードでアクティブシート以外を非表示にする方法
- VBAコードを使用して、アクティブシート以外のシートを非表示にする方法を教えてください。
- 上記のVBAコードでは、アクティブシート以外のシートを非表示にしていますが、他の選択されているシートを非表示にするにはどのように変更すればよいでしょうか。
- シートの非表示に関するVBAコードの書き方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 セレクトされているシート群にあるかどうかチェックして、なかったら非表示。 '------------------------------- 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 '------------------------------------- 以上です。
その他の回答 (2)
- qualheart
- ベストアンサー率41% (1451/3486)
他の方の回答の方が良いと思うのですが、ご参考まで。 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
お礼
ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
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
お礼
ありがとうございました。
お礼
ありがとうございました。