以下のコードですと、アクティブシート以外全て隠してしまいますが、
選択(複数)されているシート以外を非表示にするにはどのように書き換えたら良いでしょうか。
Sub Test()
Dim mstr as String
Dim i as Integer
mstr = ActiveSheet.Name
For i = 1 To Worksheets.Count
If Worksheets(i).Visible = True And Worksheets(i).Name <> str(0) Then
Worksheets(i).Visible = xlVeryHidden
End If
Next i
End Sub
よろしくお願いします。
一例です。
セレクトされているシート群にあるかどうかチェックして、なかったら非表示。
'-------------------------------
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
'-------------------------------------
以上です。
他の方の回答の方が良いと思うのですが、ご参考まで。
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
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
お礼
ありがとうございました。