マクロの初心者です。

設定シートのB1にシート名を表示するようにしています。(例:「総務部」)
ここに表示されたシート(「総務部シート」)と「設定シート」だけ表示、他のシートは非表示になるようにしたいのです。

色々試してみたのですが、うまくできません。
助けてください。

質問者からの補足コメント

  • この例で言いますと、
    「設定」シートと「総務部」シートだけ表示して、その他のシートは非表示にする
    ということです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/12/05 08:21

A 回答 (5件)

No.2です。



前回のコードで何度も操作を繰り返していると不具合が生じます。

非表示のコードの
>Next k
の次に

>sN = ""
の1行を追加してください。

※ 細かい検証をせずに投稿してごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

一発でできました!
とても助かりました。
ありがとうございます。

お礼日時:2017/12/05 10:51

No.3 の追補



もし右のようなものを求めているならば

☆ 標準モジュールに
--------------------------------------------------------------------------------
Sub シート選択表示(シート名 As String)
Dim シート番号 As Long
For シート番号 = 1 To Sheets.Count
If Sheets(シート番号).Name = "設定" Then
Sheets(シート番号).Visible = True
Else
If Sheets(シート番号).Name = シート名 Then
Sheets(シート番号).Visible = True
Else
Sheets(シート番号).Visible = False
End If
End If
Next
End Sub
--------------------------------------------------------------------------------

☆ 設定シートの「Worksheet_Change」イベントに
--------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "B1" Then
Call シート選択表示(Target.Value)
End If
End Sub
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

右のようにしたいと思っています。
画像まで添付していただき、また何度もご丁寧な説明をいただき、ありがとうございます。

お礼日時:2017/12/05 10:50

No.1 の補足



質問の説明が悪かったようですね。

下図の左右のどちらのようにしたいのでしょうか?
「エクセルマクロ シートの表示・非表示」の回答画像3
    • good
    • 0

こんにちは!



「設定」SheetのB列(B1セル以降)に表示にさせておきたいシート名が入力済みだとします。
(「総務部」だけでなく、表示させておきたいシート名を複数入れておいても大丈夫です)

そして、「再表示」の操作も必要だと思いますので、両方のコードです。
標準モジュールです。

Dim i As Long, k As Long, sN As String '//この行から//
Sub 非表示()
With Worksheets("設定")
For i = 1 To .Cells(Rows.Count, "B").End(xlUp).Row
sN = sN & "," & .Cells(i, "B")
Next i
For k = 1 To Worksheets.Count
If Worksheets(k).Name <> .Name Then
If InStr(sN, Worksheets(k).Name) = 0 Then
Worksheets(k).Visible = False
End If
End If
Next k
End With
End Sub

Sub 再表示()
For k = 1 To Worksheets.Count
With Worksheets(k)
If .Visible = False Then
.Visible = True
End If
End With
Next k
End Sub '//この行まで//

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

シートタブに表示しないと言う事ですか?


それとも「設定シート」と指定したシートを並べて表示したいという事ですか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報