[[20140327103601]] 『フィルタ後に1行おきで色づけ』(アーモンド) ページの最後に飛ぶ

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

 

『フィルタ後に1行おきで色づけ』(アーモンド)

以下のコードで偶数行に対しては色づけできます。
しかし、別条件でフィルタをかけ、ランダムに奇数・偶数行を非表示にした場合、
1行おきの色づけが無意味になってしまいます。
フィルタ後の行非表示の見た目のまま、1行おきに色づけする方法はありますか?

Private Sub CheckBox1_Click()

    Dim c As Range
    Dim myRng As Range
    Dim lastrow As Long
    lastrow = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
    Set myRng = Worksheets("Sheet1").Range("A2:AI" & lastrow)

    Application.ScreenUpdating = False
    If CheckBox1.Value = True Then

    For Each c In myRng
        If c.Row Mod 2 = 0 Then
            With c.Interior
                .Color = RGB(234, 241, 221)
                .Pattern = xlSolid
            End With
        End If
    Next c
    Else
        myRng.Cells.Interior.ColorIndex = xlNone
    End If
    Application.ScreenUpdating = True
End Sub

< 使用 Excel:Excel2007、使用 OS:Windows7 >


条件付き書式でできます。

範囲選択して、数式 =MOD(ROW(),2)=0

(きんかんぽん) 2014/03/27(木) 11:33


ありがとうございました。
(アーモンド) 2014/03/27(木) 11:38

 え、それだとフィルタしたら、行番号によっては色つきの行が続いてしまったりしませんか?

 コードでは書けませんが例えば条件付き書式で

 =MOD(SUBTOTAL(3,$A$1:$A1),2)=0

 みたいな条件では如何でしょうか?
( コナミ) 2014/03/27(木) 11:48

元のVBA利用案の例。

 Private Sub CheckBox1_Click()
    Dim i As Long
    Dim iCou As Long

    Application.ScreenUpdating = False
    With Worksheets("Sheet1")
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If .CheckBox1.Value = True Then
                If Rows(i).Hidden = False Then
                    iCou = iCou + 1
                    With .Range(.Cells(i, "A"), .Cells(i, "AI")).Interior
                        If iCou Mod 2 = 1 Then
                            .Color = RGB(234, 241, 221)
                            .Pattern = xlSolid
                        Else
                            .ColorIndex = xlNone
                        End If
                    End With
                End If
            Else
                .Range(.Cells(i, "A"), .Cells(i, "AI")).Interior.ColorIndex = xlNone
            End If
        Next i
    End With
    Application.ScreenUpdating = True
End Sub
(???) 2014/03/27(木) 14:11

コメント返信:

[ 一覧(最新更新順) ]


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