[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『色を判断してシートを非表示にするマクロ』(アイナメ)
失礼いたします。
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
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
白だけ 非表示
再度ごめんなさい
(++) 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.