[[20170914162054]] 『色を判断してシートを非表示にするマクロ』(アイナメ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『色を判断してシートを非表示にするマクロ』(アイナメ)

失礼いたします。

https://www.excel.studio-kazu.jp/cgi-bin/kazuwiki2.cgi

こちらで、非表示のシートを表示するマクロを紹介しておりますが、
こちらの逆で表示のものを非表示にしたいのですが可能なのでしょうか?

その際、非表示にするのはシート名部分がデフォルトのカラーで
表示されるものはシートカラーが赤い(複数指定)ものを希望しています。

お力添えをいただければと思います。
よろしくお願いいたします。

< 使用 Excel:unknown、使用 OS:unknown >


申し訳ありません。
リンクができておりませんでした。

https://www.excel.studio-kazu.jp/kw/20170914141758.html

こちらでございます。

マクロブックの入っているフォルダに一緒に入っている各ブックの赤い色のついたシート以外を非表示にしたいです。
よろしくお願いします。
(アイナメ) 2017/09/14(木) 16:52


Sub RVF()

  Dim sh As Object

  For Each sh In Sheets
    If sh.Tab.ColorIndex = 3 Then
      sh.Select Replace:=False
      sh.Visible = False
    End If
  Next sh

End Sub

(++) 2017/09/14(木) 17:51


 Sub ASS()
    Application.ScreenUpdating = False
    Set mb = ThisWorkbook
    myfdr = ThisWorkbook.Path
    fname = Dir(myfdr & "\*.xlsx")
    Do Until fname = Empty
    If fname <> mb.Name Then
    Set wb = Workbooks.Open(myfdr & "\" & fname)

  Dim sh As Object
  For Each sh In Sheets
    If sh.Tab.ColorIndex = 3 Then
      sh.Select Replace:=False
      sh.Visible = False
    End If
  Next sh

    End If
    fname = Dir
    Loop
    Application.ScreenUpdating = True
    End Sub
(++) 2017/09/14(木) 18:00

>その際、非表示にするのはシート名部分がデフォルトのカラーで
>表示されるものはシートカラーが赤い(複数指定)ものを希望しています。

ごめんなさい

 間違い  If sh.Tab.ColorIndex = 3 Then

 変更   If sh.Tab.ColorIndex <> 3 Then
(++) 2017/09/14(木) 18:05

 If sh.Tab.ColorIndex = 2 Then

白だけ 非表示
再度ごめんなさい
(++) 2017/09/14(木) 18:09


 シートがすべて非表示になってしまう場合のエラー対策版です。

    Sub SheetVisble()
        Dim FPath As String
        Dim sh    As Worksheet
        Dim msg   As String
        FPath = Dir(ThisWorkbook.Path & "\*.xls*")
        Do
            If FPath = "" Then
                Exit Do
            ElseIf FPath <> ThisWorkbook.Name Then
                With Workbooks.Open(ThisWorkbook.Path & "\" & FPath)
                    For Each sh In .Sheets
                        If sh.Tab.Color <> vbRed Then
                            '//赤色以外
                            On Error Resume Next
                                sh.Visible = xlSheetHidden
                                If Err.Number > 0 Then
                                    msg = msg & .Name & ":" & sh.Name & vbNewLine
                                End If
                            On Error GoTo 0
                        Else
                            '//赤色
                            sh.Visible = xlSheetVisible
                        End If
                    Next sh
                    .Close savechanges:=True
                End With
            End If
            FPath = Dir()
        Loop
        If msg <> "" Then
            MsgBox "次のブックですべてのシートが非表示になってしまうため、非表示に出来ませんでした。" & vbNewLine & msg
        Else
            MsgBox "処理が完了しました"
        End If
    End Sub

 ++さんのコードですが、
 >For Each sh In Sheets
 は
 For Each sh In wb.Sheets
 のほうがいいような・・・
 たぶん、ブックを開くのでActiveにはなっていて実質的な問題はないと思いますが、
 せっかくSetしてあるなら使えばいいのになーと思います。
(稲葉) 2017/09/14(木) 19:18

++様、稲葉様

ありがとうございます!!
すみません。
デフォルトだけといいましたがグレーがざっていましたカラーチャートの一番左の真ん中のグレーです。

その場合、2種類になっても可能なのでしょうか?
(アイナメ) 2017/09/14(木) 19:32


 赤以外非表示のコードなので、表示したい場合は別にして
 問題ないと思いますが、トラブルありました?
(稲葉) 2017/09/14(木) 19:41

稲葉様

ありがとうございます!
例えばなのですが、
赤の部分を別の色と入れに変えたい場合、又は複数の色を指定したい場合はどのようにすればよいのでしょう?

 If sh.Tab.Color <> vbRed Then

vbRed←この部分を編集だとは思うのですが基本的な色でない微妙な色の場合や2色以上の場合はどのようになりますでしょうか。

何度も申し訳ありません
(アイナメ) 2017/09/15(金) 14:58


 こんなカンジで調べられます。
 Inputboxに表示された数値をコピーして、vbRedのところに貼り付けてください。
 ・・・けど、全部同じ色なんですか?
 色が付いていないシートを非表示って考え方では駄目なんですか?、
    Sub シート見出しの色確認()
        Debug.Print InputBox("選択中のシート見出しの色は", , ActiveSheet.Tab.Color)
    End Sub
(稲葉) 2017/09/15(金) 15:07

稲葉様

調べ方をありがとうございます。

複数色が使われております。
際数的に表示するシートは、一部の色を固定で決めているそうです。

それ以外の、色に関しては使用が自由になってしまっているので現状では
表示させたくない複数のカラーも存在してしまっています。

ややこしくてすみません。
(アイナメ) 2017/09/19(火) 10:42


 Visible = True  False

此処で非表示 表示を指定しますので
特定色表示に書き換えればいいと思うけど
(++) 2017/09/19(火) 10:51


 >際数的に表示するシートは、一部の色を固定で決めているそうです。 
 「一部の色」が単色か複数色か運用が怪しいですが・・・複数色あるってことで
 以下のコードを、部分的に差し替えてください。

 '差し替え前のコード
                        If sh.Tab.Color <> vbRed Then
                            '//赤色以外
                            On Error Resume Next
                                sh.Visible = xlSheetHidden
                                If Err.Number > 0 Then
                                    msg = msg & .Name & ":" & sh.Name & vbNewLine
                                End If
                            On Error GoTo 0
                        Else
                            '//赤色
                            sh.Visible = xlSheetVisible
                        End If

 '差し替え後のコード
                        Select Case sh.Tab.Color
                            Case vbRed, vbYellow '//1)赤色 黄色の場合 カンマで区切って、複数に対応できます。
                                sh.Visible = xlSheetVisible

                            Case Else            '//上で指定した色以外は非表示
                                On Error Resume Next
                                    sh.Visible = xlSheetHidden
                                    If Err.Number > 0 Then
                                        msg = msg & .Name & ":" & sh.Name & vbNewLine
                                    End If
                                On Error GoTo 0
                        End Select
(稲葉) 2017/09/19(火) 11:14

際数的に→最終的に

失礼いたしました。

++様、稲葉様ありがとうございます。
とても勉強になりました!

さっそく複数カラーのマクロを作成してみます。
またわからないこと等ございましたら、ご助力よろしくお願いいたします!
(アイナメ) 2017/09/19(火) 15:29


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.