- ベストアンサー
色のついていない行を非表示にしたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
With Worksheets("B") Set myRang = .Cells.SpecialCells(xlCellTypeConstants) これはSpecialCells メソッドを使ってシートBの定数が含まれているセル範囲を 変数myRangに格納しています。 myRang.Select で確認できるでしょう >ワークシートの範囲は関係ないですか? 範囲が大きすぎたりすると取得できずにエラーが出ることが有るようです。 取得したmyRow範囲を行単位にループします。 For Each myRow In myRang.Rows さらにmyRow行の中をセル単位でループします。 For Each c In myRow セルが白色、もしくは無色以外であればフラグに印(True)をつけ If c.Interior.Color <> vbWhite Then flg = True Next フラグがFalseならば色つきのセルが無かった事なのでその行は非表示 If flg = flase Then myRow.EntireRow.Hidden = True 次の行をチェックの為、フラグをFalseに flg = False Next End With
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
参考に Sub Test() Dim myRow As Range, c As Range, flg As Boolean With Worksheets("B") Set myRang = .Cells.SpecialCells(xlCellTypeConstants) For Each myRow In myRang.Rows For Each c In myRow If c.Interior.Color <> vbWhite Then flg = True Next If flg = flase Then myRow.EntireRow.Hidden = True flg = False Next End With End Sub
補足
ありがとうございました。うまくいきました。 ワークシートの範囲は関係ないですか? 命令文の横にコメントで動作の解説を入れて貰えるとすごく勉強になります。 お願いできますでしょうか?
お礼
ありがとうございました。 動きみながらコマンド調べて少しずつ勉強してます。 とてもよくわかる解説、ありがとうございました。 また次回質問したら宜しくお願いします。